String
常用命令
mset 设置多个key
mget 获取多个valu
incr key 加1
incr key number 加number
decr key 减1
decrby key number 减number
strlen key 字符长度
setnx key value,可以用于分布式锁,当key不存在时才设置为指定值
应用场景
string的incr命令一般用于点赞数,浏览数,粉丝数等。
Hash
redis的Hash类似Java中的 Map<String,map<object,obje>>
命令
hset 示例:hest student name zhangsan,设置学生这个hash,学生名字为zhangsan
hget 示例: hget student name
hmset 示例:hmset student name lishi id 777
hmget 示例:hmget student name id
hgetall 示例:hgetall student
hlen 示例:hlen student
hel 删除指定值
应用场景
适用于小型商城的购物车
List
命令
Lpush lpush list1 777,向列表list1中添加元素777
rpush rpush list1 666,向列表右边添加元素666
lrange key 0 -1 查看列表中的所有数据
llen key 查看数据个数
应用场景:
公众号文章订阅
Set
无序,不可重复
常用命令
sadd sadd set1 1,2,3,1. 向set1中添加123数字,只会进去一个1
srem srem set1 2,删除数字2
smembers smembers set1,获取集合中的所有数字
sismember sismember set1 2,判断2是在set1中
scard scard获取set中有几个元素
srandmember srandmember set1 从set1中获取一个数字,不删除,后面可以跟数字,表示选几个
spop spop set1,从set1中删除一个数字,set的大小会变少,后面可以跟数字,表示删除几个
sdiff 差集
sinter 交集 set k1 1 2 3,set k2 2 3 4, sinter k1 k2,可以得到 2 3
sunion 并集
应用场景
一、随机抽奖可以使用srandmember spop
二、共同关注使用sinter,可能认识的人可以使用sunion
Zset
常用命令
应用场景
商品排行和热搜
Redis缓存淘汰策略
定时删除:对数据设置一个过期时间,当过期时就会被删除,缺点是会占用cpu时间。
惰性删除:key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。缺点:若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么可能发生内存泄露(无用的垃圾占用了大量的内存)
定期删除:每隔一段时间执行一次删除操作,删除时是随机抽样的,所以还是会造成部分过期数据一直没有删除,是上面两种方法的折中。
八大淘汰策略
LRU是最近最少使用,LFU是最不经常使用算法。
记忆方法