Redis基础
读写分离:
在一台Redis服务器承受读写访问达到极限时,就应该考虑建立Redis分布式集群,让不同Redis服务器承受读,写操作,以分流大访问量带来的符合压力问题
主节点设置
min-slaves-to-write 1 //在保证所有从节点(1)连接的情况下,主节点接受写操作,默认值为0
nub-slaves-max-lag 10 //从节点延迟时间,默认设置10秒
上述两个参数一起使用的意思为,在一个从节点连接并且延迟时间大于10秒的情况下,主节点不再接受外部的写请求,等待从节点数据主从同步
在实际集群生产环境及读写分离的情况下,上述两个参数不能为0,否则无法实现读写分离
为了进一步提高主节点写性能,可以在配置文件中注销相关参数,关闭主节点的RDB和AOF持久化功能,在从节点开启持久化功能
从节点默认只提供读操作,并在配置文件中开启持久化参数
内存配置优化:
redis数据库主要基于服务器的内存运行,所以通过对内存使用优化可以进一步提高数据库的运行效率.内存占用过大时,可以考虑对数据本身的各种优化方法,也可以考虑通过对操作系统内存设置功能的优化,来防止内存问题的产生.
1.压缩存储
Redis的列表由链表表示,散列由散列表表示,有序集合用散列表+跳跃表表示,上述数据存储结构都有指针等额外存储空间开销,为了减少对内存的占用,Redis对上述存储结构提供了一种叫压缩列表ZipList的紧凑存储方式来优化对内存的使用空间,根据Redis官网提供的数据,采用ZipList方式,平均可以使内存空间降到原来的1/5.
Zip的两个约束条件
1.仅适用于限制范围(限制存储数据量和数据大小)的数据进行操作
2.仅使用于列表/散列/有序集合和整数值集合.
在Redis.conf配置文件的高级配置部分,可以见到如下配置
list-max-ziplist-entries 512
list-max-ziplist-value 64
列表参数
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
散列表参数
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
有序集合参数
entries表示限定元素数量
value表示一个元素占用存储空间大小不超过多少
使用Ziplist格式存储的话,上述两类的限制都不能突破,任意一项超过限制值都会导致Ziplist进行失效
Redis自带默认值,根据实际测试效果,可以合理增大到(512-3000);带value的参数扩展要谨慎