- RedisApplication.java: 启动类
- StringTest.java: ValueOperations
- HashTest.java: HashOperations
- ListTest.java: ListOperations
- SetTest.java: SetOperations
- ZsetTest.java: ZSetOperations
- StreamTest.java: StreamOperations
- GeoTest.java: GeoOperations
- HyperLogLogTest.java: HyperLogLogOperations
- OtherTest.java: 其他spring未适配的操作, 采用lua脚本调用
旧版本方法,仅使用密码控制。
vim redis.conf
requirepass 123456
新版本方法,可配置用户名+密码组合,可配置规则。旧方法密码在新版本中配置为用户名为
default
,拥有所有权限的用户。
vim user.acl
user default +@all ~* >123456
user
: 命令default
: 用户名,default
表示默认用户+@all
:+
允许、@all
所有命令~*
: 所有key
>123456
: 密码设置为123456
vim redis.conf
aclfile /etc/user.acl
快照模式: 按一定规则将redis快照保存到文件,记录速度较慢,存储占用较低,重启后恢复较快
vim redis.conf
# 执行规则,每两个参数为一条规则(第一个参数时间,第二个参数变更次数),满足一条则进行保存
# 3600 1: 3600s中变更1次
# 300 100: 300s中变更100次
# 60 10000: 600s中变更10000次
save 3600 1 300 100 60 10000
# 压缩
rdbcompression yes
# 文件名
dbfilename dump.rdb
save
: 保存数据bgsave
: 后台保存数据
追加模式: 按一定规则将执行的命令按顺序保存到文件,记录速度较快,存储占用较高,重启后恢复慢
重建aof
文件,优化重复key及已删除key以减少文件大小
vim redis.conf
# 开启
appendonly no
# 文件名
appendfilename "appendonly.aof"
# 写入规则,可选项(按性能降序,丢失可能性升序): always: 每次执行写入命令时; everysec: 每秒; no: 在操作系统写出时
appendfsync everysec
# 重写配置
## 重写最小大小,低于该值时不重写
auto-aof-rewrite-min-size 64mb
## 重写百分比,当与上次重写后的大小比较大于该百分比时,则触发重写。设置为0则禁用自动重写
auto-aof-rewrite-percentage 100
BGREWRITEAOF
: 后台重写aof
文件
上述两种混合
自动将数据分片到多个实例上,每个实例处理一部分数据。 使用lua脚本需要保证所有key都在一个同一个槽
支持主从模型,从节点拥有与主节点相同的数据,当主节点宕机时可自动将从节点提升为主节点。
将key按hash取余分成16384个槽,每个节点处理一部分范围。 当客户端访问不是该实例处理的数据时,将会重定向到对应实例处理。 当需要添加或删除实例时,需手动调整处理的范围。
- 配置文件
cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
- 启动每个实例
- 配置集群
redis-cli --cluster create ip1:prot1 ip2:prot2 --cluster-replicas 1
--cluster create
: 集群实例配置,多个以空格分割--cluster-replicas
: 副本数,分配每个主节点的副本数。注意,副本也从--cluster create
提供的实例中选取。
类型名称 | 说明 | type | 命令 | 测试代码 | 需求版本 | 功能说明 |
---|---|---|---|---|---|---|
String | 字符串 / 数字 | string |
xx | StringTest | 基础kv存储,也可作为计数器 | |
Hash | 键值对 | hash |
H xx |
HashTest | ||
List | 有序可重复列表 | list |
L xx |
ListTest | ||
Set | 无序不重复集合 | set |
S xx |
SetTest | ||
Sorted Set | 有序集合 | zset |
Z xx |
ZsetTest | 常用于排行榜 | |
Stream | 数据流 | stream |
X xx |
StreamTest | 5.0 | 类似消息队列 |
Bitmap | 位图 | string |
xxBIT /BITCOUNT |
StringTest#bitMap | 低占用存储boolean数组 | |
Bitfield | 位域 | string |
BITFIELD |
StringTest#bitField | 低占用存储int数组 | |
Geospatial | 地理位置 | zset |
GEO xx |
GeoTest | 3.2 | 计算坐标位置的距离/查找范围内坐标 |
JSON | json | ReJSON-RL |
JSON. xx |
OtherTest#json | Redis Stack | 类似文档数据库 |
Probabilistic data types | 统计 | Redis Stack | 大数据统计,使用近似值以提高效率降低存储 | |||
- HyperLogLog | 基数统计 | string |
PFADD /PFCOUNT |
HyperLogLogTest | Redis Stack | 统计大量元素的去重数量,结果与实际值有一定的误差。占用<12k, 误差<0.81% |
- Bloom filters | 布尔过滤器 | MBbloom-- |
BF. xx |
OtherTest#bf | Redis Stack | 判断一个数是否存在集合,可能将不存在判断为存在,集合不可以删除元素 |
- Cuckoo filters | 布谷鸟过滤器 | MBbloomCF |
CF. xx |
OtherTest#cf | Redis Stack | 判断一个数是否存在集合,可能将不存在判断为存在,集合可以删除元素(可能误删),集合添加元素可能失败 |
- t-digest | 近似分位数 | TDIS-TYPE |
TDIGEST. xx |
OtherTest#tdigest | Redis Stack | 计算近似的百分位或元素的百分位位置,结果与实际值有一定的误差 |
- Top-K | 前k位 | TopK-TYPE |
TOPK. xx |
OtherTest#topk | Redis Stack | 获取最高的k元素值,结果与实际值有一定的差异 |
- Count-min sketch | 频率统计 | CMSk-TYPE |
CMS. xx |
OtherTest#cms | Redis Stack | 统计元素的频率,结果与实际值有一定的误差 |
Time series | 时间序列 | TSDB-TYPE |
TS. xx |
OtherTest#ts | Redis Stack | 类似时序数据库 |