(2)当成员数量增大时会自动转成真正的HashMap,此时encoding为ht 。
List
常用命令:lpush,rpush,lpop,rpop,lrange 。
应用场景:Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现 。
实现方式:Redis list的实现为一个双向链表,可以支持反向查找和遍历,方便操作 。不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构 。
Set
常用命令:sadd,spop,smembers,sunion 。
应用场景:Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的 。
实现方式:set的内部实现是一个value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因 。
Sorted set
常用命令:zadd、zrange、zrem、zcard 。
使用场景:Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序 。当你需要一个有序的并且不重复的集合列表,可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的 。
实现方式:Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的 是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单 。
Redis集群
(1)通过keepalived实现的高可用方案

文章插图
切换流程:
- 当Master挂了后,VIP漂移到Slave;Slave 上keepalived 通知redis 执行:slaveof no one ,开始提供业务;
- 当Master起来后,VIP 地址不变,Master的keepalived 通知redis 执行slaveof slave IP host,开始作为从同步数据;
- 依次类推 。
- 非计划性,不做考虑,一般也不会存在这种问题
- 计划性重启,重启之前通过运维手段SAVE DUMP 主库数据;需要注意顺序:
- 关闭其中一台机器上所有redis,是得master全部切到另外一台机器(多实例部署,单机上既有主又有从的情况);并关闭机器
- 依次dump主上redis服务
- 关闭主
- 启动主,并等待数据load完毕
- 启动从
- 删除DUMP 文件(避免重启加载慢)
特点:快、轻量级、减少后端Cache Server连接数、易配置、支持ketama、modula、random、常用hash分片算法 。

文章插图
这里使用keepalived实现高可用主备方案,解决proxy单点问题 。
优点:
- 对于客户端而言,redis集群是透明的,客户端简单,遍于动态扩容;
- Proxy为单点、处理一致性hash时,集群节点可用性检测不存在脑裂问题;
- 高性能,CPU密集型,而redis节点集群多CPU资源冗余,可部署在redis节点集群上,不需要额外设备 。
(1)数据结构:Memcache只支持key value存储方式,Redis支持更多的数据类型,比如Key value、hash、list、set、zset;
(2)多线程:Memcache支持多线程,Redis支持单线程;CPU利用方面Memcache优于Redis;
(3)持久化:Memcache不支持持久化,Redis支持持久化;
(4)内存利用率:Memcache高,Redis低(采用压缩的情况下比Memcache高);
(5)过期策略:Memcache过期后,不删除缓存,会导致下次取数据数据的问题,Redis有专门线程,清除缓存数据;
五、本地缓存
本地缓存是指应用内部的缓存,标准的分布式系统,一般有多级缓存构成 。本地缓存是离应用最近的缓存,一般可以将数据缓存到硬盘或内存 。
1、硬盘缓存
将数据缓存到硬盘到,读取时从硬盘读取 。原理是直接读取本机文件,减少了网络传输消耗,比通过网络读取数据库速度更快 。可以应用在对速度要求不是很高,但需要大量缓存存储的场景 。
推荐阅读
- 茶月饼和茶食品热销 茶企瓜分中秋经济大蛋糕
- 分布式微服到底是什么
- Win7系统硬盘分区怎么调整大小
- 大家都是怎么做站群的?
- 梦见家里人失踪到处找 梦见家人失踪到处找找到了打什么奖
- 茶路之旅风情展区成北交会大亮点
- 冲蹲便器水压小怎么办,蹲便器冲水太大怎么办
- 花洒底座是否都统一大小,花洒可以随便换吗
- 个性淘宝店名 淘宝网店店名大全
- 梦到被小孩缠着赶不走最后还是敢走了是什么意思 梦到被小孩缠着赶不走小女孩
