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删除策略
当内存达到Redis最大内存空间、触发内存淘汰策略
设置:
1、更改redis.conf文件中的参数maxmemory-policy = allkeys-Iru
2、进入控制台输入 config set maxmemory-policy allkeys-Iru
记忆方法:两个维度过期键中筛选/所有键中筛选、四个方面LRU/LFU/random/ttl