1 key的设计
1.1 统一管理
1 可读性
以业务名(数据库名)为前缀,防止key冲突。例如.auth:user:id
2 可管理性
:为分割在管理工具好肉眼查看,操作时(crud)好找。例如:dispatch:task:taskId
3 简介性
保障语义的前提下,要小于39字节。
例如 student:course:message s:c:m
4 不要包含特殊字符
可能会导致其他问题
1.2 key限制大小解释
使用越小占用使用效率越高
3.*版本
emstr->39字节->raw
emstr:一次内存分配
raw:两次内存分配
4.*版本
emstr->44字节->raw
emstr:一次内存分配
raw:两次内存分配
2 value设计
bigkey问题
String : 10KB内
list set hash zset:5000个内
2.1 数据结构应用的场景(选择的数据结构)
hash 可以用于实体存储,
List 先进后出可以用于队列使用
Set 保存重复的临时信息信息 O(1)复杂度
ZSet 可用于排行榜
2.2 设置超时时间
1 根据业务设置超时时间,例如登录用户 EXPIRE user:1 3600(秒)
2 大于某个时间key删除,具体方法:OBJECT IDLETIME <key> 返回给定 key 自储存以来的空转时间(idle, 没有被读取也没有被写入),以秒为单位。
3 随机超时删除值
3 避免bigkey
3.1 危害
1 网络阻塞
2 集群节点熟练不均匀
3 redis阻塞
4 频繁序列化消耗CPU资源
4 优化
1 使用连接池,(打印命令,打印异常)
1.1 maxTotal = maxIdle
2 多个业务redis服务化处理
5 技巧 jedis redisson如何选择
redis官网java客户端
单应用:jedis
分布式用:redisson
工具推荐
1 Another Redis Desktop Manager(推荐使用)
1 数据多使用
2 有数据监控
3 好看
2 RedisDesktopManager
数据少使用
总结
redis很好,学会一点规范,原则。能更好的提高效率,减小成本。