Java Redis系列2 (redis的安装与使用+redis持久化的实现))
Java Redis 系列 2 (redis 的安装与使用 +redis 持久化的实现)
什么是 Redis?
Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 个并发执行 100000 个请求, 读的速度是 110000 次 /s, 写的速度是 81000 次 /s ,且 Redis 通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:
- 字符串类型 string
- 哈希类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 sortedset
Redis 的应用场景
1. 缓存(数据查询,短链接,新闻内容,商品内容)
2. 聊天室的在线好友
3. 任务队列(秒杀,抢购)
4. 应用排行榜
5. 网站访问统计
6. 数据过期处理
7. 分布式集群架构中的 session 分离
下载安装
- 官网:https://redis.io
- 中文网:http://www.redis.net.cn/
- 解压直接可以使用:
* redis.windows.conf:配置文件
* redis-cli.exe:redis的客户端
* redis-server.exe:redis服务器端
Redis 的数据结构
看过我上一篇文章的兄弟应该都知道 redis 是 key,value 格式的数据,其中 key 是字符串
,value 是有五种不同的数据结构
图解
value 的数据结构类型
1. 字符串类型 String
2. 哈希类型 hash:map 格式
3. 列表类型 list:linkedlist 格式,支持重复元素
4. 集合类型 set:不允许重复元素
5. 有序集合类型:sortedset:不允许重复元素,且元素有顺序
命令操作
我们先打开服务器端再打开客户端
1. 字符串类型
1.1 存储 set key value
1.2 获取 get value
演示2. 哈希类型
1. 存储 :hset key field value
2. 获取 :hget key field
3. 获取全部的 key 和 valu :hgetall myhash
4. 删除:hdel key field
演示
3. 列表类型
可以添加一个元素带一个列表的头部或尾部
1.lpush key value:将元素加入到列表左表
2.rpush key value:将元素加入到列表的右表
3. 获取:lrange key start end:范围获取
4. 删除列表最左边的元素并将元素返回:lpop key
5. 删除列表最右边的元素并将元素返回:rpop key
演示
// 从左边插入元素
127.0.0.1:6379> lpush list a
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
// 获取全部元素
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
127.0.0.1:6379> rpush list c
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
3) "c"
// 移除列表最左边的元素
127.0.0.1:6379> lpop list
"b"
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "c"
// 移除列表最右边的元素
127.0.0.1:6379> rpop list
"c"
127.0.0.1:6379> lrange list 0 -1
1) "a"
127.0.0.1:6379>
集合类型 set:不允许重复元素
1. 存储数据 sadd key value
2. 删除数据 srem key value
3. 获取数据:smembers key 获取 set 集合中的所有元素
// 添加数据
127.0.0.1:6379> sadd set 1
(integer) 1
127.0.0.1:6379> sadd set 2
(integer) 1
// 获取所有元素
127.0.0.1:6379> smembers set
1) "1"
2) "2"
// 删除指定元素
127.0.0.1:6379> srem set 1
(integer) 1
127.0.0.1:6379> smembers set
1) "2"
127.0.0.1:6379>
有序集合类型 sortedset
不允许重复元素,且元素有序,每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
// 插入数据
127.0.0.1:6379> zadd sortedset 1 zhangsan
(integer) 1
127.0.0.1:6379> zadd sortedset 5 lisi
(integer) 1
127.0.0.1:6379> zadd sortedset 2 wangwu
(integer) 1
// 获取数据
127.0.0.1:6379> zrange sortedset 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
// 移除指定数据
127.0.0.1:6379> zrem sortedset wangwu
(integer) 1
127.0.0.1:6379> zrange sortedset 0 -1
1) "zhangsan"
2) "lisi"
127.0.0.1:6379>
通用命令
keys * :获取所有键
type key :获取键对应的 value 的类型
del key :删除指定的 key value
Redis 持久化
为什么要进行持久化?
redis 是一个内存数据库,当 redis 服务器重启时,数据会丢失,所以我们需要将 redis 数据持久化到硬盘文件中
redis 的持久化机制
1.RDB: 默认方式,不需要进行配置,默认就是使用这种机制
在一定的时间间隔内,通过检测 key 的变化情况,然后持久化数据
1.1 编辑 redis.windows.conf 文件
save 900 1
15 分钟后至少一个发生改变
save 300 10
五分钟后至少 10 个发生改变
save 60 10000
一分钟后至少 10000 个发生改变
1.2 重新启动 redis 服务器,并指定配置文件名称
D:\JavaWeb2018\day23_redis\ 资料 \redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf
AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
1. 编辑 redis.windwos.conf 文件
appendonly no(关闭 aof) --> appendonly yes (开启 aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化