REDS常用命令及应用

STRING

字符串类型是Redis最基础的数据结构,其它的几种数据结构都是在字符串类型基础上构建的,字符串的值可以是:字符串、数字、二进制,但其值最大不能超过512M。

常用API整理

API解释
set key value设置key的value值
setnx key value当key不存在时进行set(分布式锁)
mset key value [key value …]批量赋值多个key value
get key返回key的value
mget key [key …]批量获取key保存的值
decr/incr key将指定key的value数值进行+1/-1(仅对于数字)
incrby/decrby key n按指定的步长对数值进行加减(仅对于数字)
strlen key返回key的string类型value的长度)

应用场景:商品点赞阅读量的增减(incr/decr key)、

HASH

几乎所有的编程语言都提供了哈希(hash)结构,Redis中 hash 是一个string类型的field和value的映射表value={{field1,value1},{field2,value2}…},可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。

常用API整理:类似Java的泛型 Map<String,Map<Object,Object>

API解释
hset key field value一次设置一个字段值
hget key field value一次获取一个字段值
hmset key field1 value1 [field2 value2…]一次设置多个字段值
hmget key field1 [field2…]一次获取多个字段值
hgetall key获取在哈希表key 的所有字段和值

应用场景:可用于做简易购物车功能(key 为用户购物车、多个键值对为商品信息)

LIST

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以获取指定范围指定下标的元素等。

API解释
lpush key value1[value2…]左边向列表中PUSH值(一个或者多个)
rpush key value1[value2…]右边向列表中PUSH值(一个或者多个)
llen key查看列表长度

应用场景:微信文章订阅的公众号(key 用户、value被订阅的公众号)

SET

Redis的Set是string类型的无序集合,我们不能通过索引获取元素。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

常用API整理

API解释
sadd key member1[member2…]向集合中无序增加一个/多个成员
srem key member1[member2…]移除集合中一个/多个成员
smembers key返回集合中所有的成员
srandmember key [count]随机返回集合中count个成员,count默认值为1(不删除返回元素)
spop key [count]随机移除并返回集合中count个成员,count默认值为1(删除返回元素)
sismember key value查询value元素是否存在集合,true返回1反之0

应用场景:随机抽奖系统(srandmember key随机返回一个人员)

ZSET

在有序集合中保留了不能有重复成员的特性,但其中的成员是可以排序的,每一个元素都会关联一个double类型的分数(score)作为排序依据,score相同时按字典顺序排序。redis正是通过分数来为集合中的成员进行从小到大的排序。

常用API整理

API解释
zadd key score member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrem key member [member…]剔除元素
zrange key start end通过索引区间返回有序集合成指定区间内的成员
zcount key min max计算在有序集合中指定区间score的成员数
zscore key member返回有序集中,成员的分数值
zincrby key n member有序集合中对指定成员的分数加上增量 n

应用场景:实现热搜等排行榜

REDIS删除策略

  1. 定时删除:不断轮询所有key的过期时间、到点释放内存消除key,CPU的时间换取空间
  2. 惰性删除:类似懒加载、只有每次在获取key时、判断是否过期再选择删除,对内存不友好
  3. 定期删除:隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
    特点1:CPU性能古用设置有峰值,检测频度可自定义设置
    特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
    总结:周期性抽查存储空间(随机抽查,重点抽查)

当内存达到Redis最大内存空间、触发内存淘汰策略

  1. noeviction:不会驱逐任何key
  2. allkeys-Iru:对所有key使用tRu算法进行删除。备注:生产常用
  3. volatile-lru:对所有设置了过期时间的key使用LRu算法进行删除
  4. allkeys-random:对所有key随机删除
  5. yolatile-random:对所有设置了过期时间的key随机删除
  6. volatile-ttl:删除马上要过期的key
  7. allkeys-lfu:对所有key使用LFu算法进行删除
  8. volatile-lfu:对所有设置了过期时间的key使用LFu算法进行删除

设置:
1、更改redis.conf文件中的参数maxmemory-policy = allkeys-Iru
2、进入控制台输入 config set maxmemory-policy allkeys-Iru
记忆方法:两个维度过期键中筛选/所有键中筛选、四个方面LRU/LFU/random/ttl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值