一、Redis常用的5种数据类型
- 字符串(String):最基本的数据类型,可以存储字符串、整数或浮点数。
- 哈希(Hash):键值对的集合,可以在一个哈希数据结构中存储多个字段和值。
- 列表(List):按照插入顺序存储一组有序的值,可以在列表的两端执行插入、删除和访问操作。
- 集合(Set):无序的唯一值的集合,支持对集合执行添加、删除和集合间的交集、并集、差集等操作。
- 有序集合(Sorted Set):也叫Zset,类似于集合,但每个成员都关联着一个分数(score),可以根据分数对成员进行排序,同时保持唯一性。
二、String类型
常用操作
- SET key value:设置指定 key 的值为给定的 value。
- GET key:获取指定 key 的值。
- DEL key:删除指定的 key。
- MSET key value [key value ...]:批量设置key value。
- MGET key [key ...]:批量获得key value。
- SETEX key seconds value:设置指定 key 的值,并指定过期时间(以秒为单位)。
- SETNX key value:设置 key 不存在的key value,如果key存在,那么当前value不会覆盖已存在key的value。
- STRLEN key:返回指定 key 的值的长度。
原子加减操作:
- INCR key:将指定 key 的值加 1。
- DECR key:将指定 key 的值减 1。
- INCRBY key increment:将指定key的value与increment相加,只针对数字类型。
- DECEBY key decrement:将指定key的value减去decrement,只针对数字类型。
- APPEND key value:将指定 value 追加到指定 key 的值末尾。
- GETSET key value:设置指定 key 的新值,并返回旧值。
单值缓存操作:
- SET key value
- GET key
对象缓存操作:
- SET user:1 value(value是一个JSON字符串)
- MSET user:1:name zhangsan user:1:age 18
分布式锁操作:
- SETNX lock_key 1 (lock_key:要锁的键, 1: 可以是任意非空的值,用于表示锁的存在。结果返回0表示false,1表示true)
- DEL lock_key //执行完业务逻辑释放锁
- SETEX lock_key expiration_time 1(设置有时效的锁)
Sting类型适用场景
- 例如统计一篇文章的阅读量,在业务场景上来说用户打开一篇文章则+1,那么可以使用redis的计数器。使用incr article:readcount:1000,每执行一次表示文章ID为1000的累加一次。article:readcount是我们自定义的前缀,为了更好的见名识义
- Web集群session共享,spring session + redis实现session共享
- 分布式全局序列号,使用redis批量生成序列号提升性能,INCRBY orderId 1
三、Hash类型
常用操作
- HSET key field value:设置 Hash 中指定键的字段和值。
- HGET key field:获取 Hash 中指定键的字段的值。
- HDEL key field1 [field2 ...]:删除 Hash 中指定键的一个或多个字段。
- HEXISTS key field:检查 Hash 中指定键是否存在指定字段。
- HKEYS key:获取 Hash 中指定键的所有字段名。
- HVALS key:获取 Hash 中指定键的所有字段值。
- HGETALL key:获取 Hash 中指定键的所有字段和值。
- HINCRBY key field increment:将 Hash 中指定键的字段值按给定增量递增。
- HLEN key:获取 Hash 中指定键的字段数量。
对象缓存操作
- HMSET key field1 value1 [field2 value2 ...]:同时设置 Hash 中指定键的多个字段和值。
- HMGET key field1:获取 Hash 中指定键的字段值。
四、List类型
常用操作
- LPUSH key element1 [element2 ...]:将一个或多个元素从左侧插入到列表中。
- RPUSH key element1 [element2 ...]:将一个或多个元素从右侧插入到列表中。
- LPOP key:从左侧移除并返回列表中的第一个元素。
- RPOP key:从右侧移除并返回列表中的最后一个元素。
- BRPOP key [key ...] timeout:从右侧移除一个元素,如果没有则等待,timeout是等待时长(秒),0则一直等待
- LINDEX key index:获取列表中指定索引位置的元素值。
- LRANGE key start stop:获取列表中指定范围内的元素列表。
- LLEN key:获取列表的长度(即列表中元素的数量)。
- LREM key count element:从列表中移除指定数量的匹配元素。
- LINSERT key BEFORE|AFTER pivot element:在列表中指定元素的前面或后面插入一个元素。
- LSET key index element:将列表中指定索引位置的元素替换为新的值。
五、Set类型
常用操作
- SADD key member1 [member2 ...]:将一个或多个成员添加到集合中,成员存在则忽略,不存在则新建。
- SREM key member1 [member2 ...]:从集合中移除一个或多个成员。
- SISMEMBER key member:检查指定成员是否存在于集合中。
- SMEMBERS key:获取集合中的所有成员。
- SCARD key:获取集合中的成员数量。
- SPOP key [count]:从集合中随机移除并返回一个或多个成员。
- SRANDMEMBER key [count]:从集合中随机获取一个或多个成员,但不移除。
- SDIFF key1 [key2 ...]:获取多个集合的差集。(计算公式为:list1-(list2、list2、...的并集),第一个集合减去其他几个集合的并集。排除相同的元素,第一个集合剩下的就是并集)
- SINTER key1 [key2 ...]:获取多个集合的交集。
- SUNION key1 [key2 ...]:获取多个集合的并集。
六、Sorted Set(Zset)
- ZADD key score1 member1 [score2 member2 ...]:将一个或多个成员及其分数添加到有序集合中。各参数的具体含义:key为键,score为member的分数,用于排序,member是key的值,可以批量添加。
- ZREM key member1 [member2 ...]:从有序集合中移除一个或多个成员。
- ZSCORE key member:获取有序集合中指定成员的分数。
- ZRANGE key start stop [WITHSCORES]:按照分数从小到大的顺序,获取有序集合中指定索引范围内的成员。
- ZREVRANGE key start stop [WITHSCORES]:按照分数从大到小的顺序,获取有序集合中指定索引范围内的成员。
- ZCARD key:获取有序集合中的成员数量。
- ZCOUNT key min max:计算有序集合中分数在给定范围内的成员数量。
- ZRANK key member:获取有序集合中指定成员的排名,排名从0开始。(按照分数从小到大的顺序)。
- ZREVRANK key member:获取有序集合中指定成员的排名(按照分数从大到小的顺序)。
- ZINCRBY key increment member:将有序集合中指定成员的分数增加给定的增量值。