概念
redis是一款高性能的NOSQL系列的非关系型数据库
-
关系型数据库:数据存储在表中,表和表之间有一对多、多对一等一系列关系,表和表之间的属性也有一定的关系;并且数据存储在硬盘上。
-
非关系型数据库(NOSQL):存储键值对或列等类型,数据之间没有任何关系;数据存储在内存中。
客户端向服务器发生一些请求时,服务器操作关系型数据库是非常耗时的。如果经常查询一些不经常发生改变的数据时,引入缓存思想提高效率。
- 客户端请求一条数据时
- 从缓存中获取数据
- 缓存中有数据:直接返回
- 缓存中没有数据:
- 从数据库中查询
- 将数据放入缓存
- 返回数据
- 从缓存中获取数据
关系型数据库与NOSQL数据库是互补的,一般会将数据存储在关系型数据库中,在NOSQL数据库中备份关系型数据库中的数据
主流的NOSQL产品功能
- 键值存储数据库
- 列存储数据库
- 文档型数据库
- 图形数据库
redis是键值存储数据库
redis的应用场景
- 缓存(数据查询、短链接、新闻内容、商品内容...)
- 聊天室的在线好友列表
- 任务队列(秒杀、抢购...)
- 应用排行榜
- 网站访问统计
- 数据过期处理(精确到毫秒)
- 分布式集群架构中的session分离
redis支持的键值数据类型
- 字符串 String
- 哈希类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 sortedset
下载安装
Windows 64位 3.0.504 下载
链接:https://pan.baidu.com/s/1s4eNA7d_vaIyJnUlt06pHA
提取码:o2al
解压直接使用
- redis.windows.conf :配置文件
- redis-cli.exe :客户端
- redis-server.exe :服务器端
简单使用
命令操作
redis的数据结构
redis存储的是 key:value 格式的数据,其中key都是字符串,value有5种不同的类型
- 字符串 String
- 哈希类型 hash :map格式
- 列表类型 list :linkedlist格式
- 集合类型 set
- 有序集合类型 sortedset
常用命令
字符串类型
存储:set key value
获取:get key
删除:del key
哈希类型
存储:hset key field value
获取:hget key field
hsetall key
删除:hdel key field
列表类型
存储:lpush key value 将元素加入列表左边
rpush key value 将元素加入列表右边
获取:lrange key start end 范围获取,0 -1 表示所有
删除:lpop key 删除列表最左边的元素,并将元素返回
rpop key 删除列表最右边的元素,并将元素返回
集合类型
set不允许重复,是无序的
存储:sadd key value 可以一次添加多个value
获取:smembers key 获取set集合中的所有元素
删除:srem key value 删除set集合中的某个元素
有序集合类型
不允许重复,有序的
存储:zadd key score value
获取:zrange key start end
删除:zrem key value
通用命令
keys * 查询所有的键
type key 获取key对应value的类型
del key 删除指定的key value
持久化
redis是一个内存数据库,内存中的数据是临时的,当redis服务器重启,或者电脑重启时,数据会丢失。可以将redis内存中的数据持久化到硬盘的文件中。
redis持久化机制
1.RDB
默认方式,不需要进行配置。
-
编辑redis.windows.conf文件
# after 900 sec (15 min) if at least 1 key changed # 15分钟最少有一个key被改变,持久化一次 # after 300 sec (5 min) if at least 10 keys changed # 5分钟内最少有一次10个key发生改变,持久化一次 # after 60 sec if at least 10000 keys changed # 1分钟内有10000个key改变,持久化一次 save 900 1 save 300 10 save 60 10000
-
重启redis服务器,并指定配置文件
在redis目录下打开cmd窗口,输入
redis-server.exe redis.windows.conf
-
在当前目录下生成数据文件
当执行持久化操作时,会在当前目录下生成一个 .rdb 格式的文件。
以后再重启服务器之后,就可以读取到之前的数据。
2.AOF
默认关闭
-
编辑配置文件
appendonly no --> appendonly yes(开启AOF)
# appendfsync always 每一次操作都进行持久化 appendfsync everysec 每隔一秒进行一次持久化 # appendfsync no 不进行持久化
第一条与第三条默认注释掉了
-
重启服务器
在redis目录下打开cmd窗口,输入
redis-server.exe redis.windows.conf
-
在当前目录下生成数据文件
会根据配置文件的中的方式生成 .aof 格式的文件(隔一秒生成、操作一次生成)
java客户端 Jedis
相关jar包
链接:https://pan.baidu.com/s/1qB5JCSYc5zbs2URxs3nDgA
提取码:bd7z
Jedis:是java操作redis数据库的工具
-
使用步骤
-
添加相关jar包
-
使用
-
/**
* 快速入门使用Jedis
*/
@Test
public void Test1(){
//1.获取链接
Jedis jedis = new Jedis("localhost",6379);
//2.操作
jedis.set("username","zhangsan");//除了set,可以用其它的命令方法
//3.关闭连接
jedis.close();
}
连接池
使用步骤
- 创建JedisPool连接池对象
- 调用getResource()方法,获取Jedis连接
public void Test1(){
//1.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);//设置最大允许连接数,也可以进行其他配置
//2.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//3.获取连接
Jedis jedis = jedisPool.getResource();
//4.使用
jedis.set("name","ww");
//5.关闭,归还到连接池中
jedis.close();
}