阿里redis开发规范、java开发手册 | 青训营笔记
学习,阿里的redis和java开发手册,知道了redis的设计模式和原理,从一下几个方面说明:键值设计、命令使用、客户端使用、相关工具。使用java程序来调用redis。
- key:不要包含特殊字符
string最好在10kb以内,hash、list、set、zset元素个数不要超过5000。- 通过
expire设置键值对的生命周期 - 批量操作
mget、mset(最好500以内)
注意:reids不支持rollback 使用lua达到原子性操作
-
该并发下增加熔断功能
-
淘汰策略:根据自身业务类型,选好maxmemory-policy(最大内存淘汰策略),设置好过期时间。 默认策略是volatile-lru,即超过最大内存后,在过期键中使用lru算法进行key的剔除,保证不过期数据不被删除,但是可能会出现OOM问题。
其他策略如下:
- allkeys-lru:LRU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。
- allkeys-random:随机删除所有键,直到腾出足够空间为止。
- volatile-random:随机删除过期键,直到腾出足够空间为止。
- volatile-ttl:根据键值对象的ttl属性,删除最近将要过期数据。如果没有,回退到noeviction策略。
- noeviction:不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息"(error) OOM command not allowed when used memory",此时Redis只响应读操作。
数据同步:redis-port 热点搜索:redis-faina
删除big key
hash、list、set。sortedSet
补充
Redis 高级特性
- 发布与订阅
Redis 支持发布与订阅模式,即客户端可以订阅一个或多个频道,当有消息发布到指定频道时,所有订阅该频道的客户端都会收到相应的消息。发布与订阅模式可以实现实时通知、消息推送等功能。
- Lua 脚本
Redis 支持执行自定义的 Lua 脚本,开发者可以使用 Lua 语言编写各种复杂的业务逻辑,从而提高 Redis 的灵活性和可扩展性。
- 事务操作
Redis 支持事务操作,可以在一次请求中执行多个命令,并在所有命令执行完成后提交或回滚事务。事务操作可以保证多个命令之间的数据一致性,避免并发操作时数据不一致的问题。
- 慢查询日志
Redis 可以记录执行时间较长的命令,用户可以通过查看慢查询日志来分析系统性能瓶颈,并进行性能优化。