String,List,Set,Zset,Hash
可以对 String 进行自增自减运算,从而实现计数器功能
可用于分布式锁限流
将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。
可以使用 Redis 来统一存储多台应用服务器的会话信息。当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务
器,从而更容易实现高可用性以及可伸缩性。
string——适合最简单的k-v存储,类似于memcached的存储结构,短信验证码,配置信息等,就用这种类型来存储。
hash——一般key为ID或者唯一标示,value对应的就是详情了。如商品详情,个人信息详情,新闻详情等。
list——因为list是有序的,比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表等。因为list是有序的,适合根据写入的时间来排序,如:最新
的***,消息队列等。
set——可以简单的理解为ID-List的模式,如微博中一个人有哪些好友,set最牛的地方在于,可以对两个set提供交集、并集、差集操作。例如:查找两个人
共同的好友等。
Sorted Set——是set的增强版本,增加了一个score参数,自动会根据score的值进行排序。比较适合类似于top 10等不根据插入的时间来排序的数据。
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。
RDB(默认) 和 AOF 机制
RDB:
优点:
1、只有一个文件 dump.rdb,方便持久化。
2、容灾性好,一个文件可以保存到安全的磁盘。
3、性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了redis 的高性能
4.相对于数据集大时,比 AOF 的启动效率更高。
优点:
缺点:
(expires字典会保存所有设置了过期时间的key的过期时间数据,其中,key某个键的指针,value是该键的过期时间。键空间是指该Redis集群中保存的所有键。)
Redis中同时使用了惰性过期和定期过期两种过期策略。
EXPIRE和PERSIST命令。
缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。
全局的键空间选择性移除
设置过期时间的键空间选择性移除
redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。