前言
上节总结了Redis的基本操作、特性和原理,我们还需要从使用技巧,优化策略等方面来学习。
redis和关系型数据库适用场景
key设计原则
参考实例:redis key设计技巧,浅谈 Redis 数据库的键值设计
总结如下:
- 表达从属关系(一对多,多对多),最好用集合; 比如: 书名和标签,关注与被关注(微博粉丝关系)等等。
- 求最近的,一般利用链表后入后出的特性。比如:最近N个登录的用户,可以维护一个登录的链表,控制他的长度,使得里面永远保存的是最近的N个登录用户。
- 对于排序,积分榜这类需求,可以用有序集合,比如:我们把用户和登录次数统一存储在一个sorted set里,然后就可以求出登录次数最多用户。
- 对于大数据量的非是即否关系,还可以通过位图(setbit)的方式,比如:1亿个用户, 每个用户 登陆/做任意操作,记为今天活跃,否则记为不活跃;(每天一个位图来记录,会员id就是位图的位置);
优化策略
总结:
- 根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。
- 当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
- 如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。
- 不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。
redis.conf中的maxmemory选项,该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。
redis.conf文件中 vm-enabled 为 no
说明
文中出现的图片,文字描述有些来自互联网,但是出处无法考究,如果侵犯您的相关权益,请联系我,核实后我会马上加上转载说明。谢谢!!!