前言
近期回顾了Redis方面的技术,本文就redis的5大基础数据类型的指令做了一个总结并附上示例
一、Redis是什么?
Redis是一种开源的内存数据库,它被用作缓存、消息代理和键值存储。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这使得它非常灵活且适用于各种用途。Redis的速度很快,因为它将数据存储在内存中,并且可以持久化到磁盘,确保数据在重启后不会丢失。它也支持多种语言的客户端库,这使得它在各种应用和开发环境中都很流行。
二、基础数据类型使用方法及示例
字符串 (Strings):
-
设置键的值:
bashSET mykey "Hello"
-
获取键的值:
bashGET mykey
-
设置多个键值对:
bashMSET key1 "value1" key2 "value2"
-
删除键:
bashDEL key1
-
将键的值递增1:
bashINCR counter
-
在键的值后追加内容:
bashAPPEND mykey " World"
-
设置键的过期时间:
bashEXPIRE mykey 60
-
获取键的剩余生存时间:
bashTTL mykey
-
获取键值的子字符串:
bashGETRANGE mykey 0 3
-
获取键值的长度:
bashSTRLEN mykey
-
获取多个键的值:
bashMGET key1 key2
-
设置键不存在时才设置键的值:
bashSETNX mykey "newvalue"
-
设置键的值并同时设置过期时间:
bashSETEX mykey 60 "value"
-
设置新值并返回旧值:
bashGETSET mykey "newvalue"
-
将键的值递增指定的步长:
bashINCRBY counter 5
-
将键的值递减1:
bashDECR counter
-
将键的值递减指定的步长:
bashDECRBY counter 3
-
设置位图中指定偏移量的值:
bashSETBIT mybitmap 7 1
-
获取位图中指定偏移量的值:
bashGETBIT mybitmap 7
-
统计位图中值为1的位的数量:
bashBITCOUNT mybitmap
哈希 (Hashes):
-
设置哈希字段的值:
bashHSET user:id:001 username Alice
-
获取哈希字段的值:
bashHGET user:id:001 username
-
设置多个哈希字段的值:
bashHMSET user:id:001 username Alice age 30
-
删除哈希字段:
bashHDEL user:id:001 age
-
获取哈希中所有字段和值:
bashHGETALL user:id:001
-
判断哈希字段是否存在:
bashHEXISTS user:id:001 username
-
获取哈希所有字段:
bashHKEYS user:id:001
-
获取哈希所有值:
bashHVALS user:id:001
-
哈希字段的值递增指定的步长:
bashHINCRBY user:id:001 age 5
-
获取哈希中字段的数量:
bashHLEN user:id:001
-
获取多个哈希字段的值:
bashHMGET user:id:001 username age
-
当字段不存在时设置哈希字段的值:
bashHSETNX user:id:001 email "alice@example.com"
-
获取哈希字段值的长度:
bashHSTRLEN user:id:001 username
-
迭代哈希中的元素:
bashHSCAN user:id:001 0 MATCH "user*"
-
哈希字段的值递增指定的浮点数步长:
bashHINCRBYFLOAT user:id:001 balance 10.5
-
从哈希中随机获取指定数量的字段:
bashHRANDFIELD user:id:001 2
-
获取哈希字段值的长度:
bashHSTRLEN user:id:001 username
-
迭代哈希中的元素:
bashHSCAN user:id:001 0 MATCH "user*"
-
哈希字段的值递增指定的浮点数步长:
bashHINCRBYFLOAT user:id:001 balance 10.5
-
从哈希中随机获取指定数量的字段:
bashHRANDFIELD user:id:001 2
列表 (Lists):
-
将一个值插入到列表的头部:
bashLPUSH mylist "world"
-
将一个值插入到列表的尾部:
bashRPUSH mylist "world"
-
移除并获取列表头部的元素:
bashLPOP mylist
-
移除并获取列表尾部的元素:
bashRPOP mylist
-
获取列表指定范围的元素:
bashLRANGE mylist 0 -1
-
获取列表长度:
bashLLEN mylist
-
通过索引获取列表元素:
bashLINDEX mylist 0
-
在列表中某个元素之前或之后插入值:
bashLINSERT mylist BEFORE|AFTER pivot value
-
移除列表中与给定值相等的元素:
bashLREM mylist 0 "value"
-
从列表的一个尾部或多个尾部列表移除元素并将其添加到另一个列表的头部:
bashRPOPLPUSH source destination
-
对列表进行修剪,保留指定范围内的元素:
bashLTRIM mylist 0 2
-
阻塞式的列表弹出操作:
bashBLPOP key [key ...] timeout
-
阻塞式的列表弹出操作:
bashBRPOP key [key ...] timeout
-
将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端:
bashRPOPLPUSH source destination
-
将列表 source 中的最后一个元素(尾元素)弹出,并插入到列表 destination 开头并返回给客户端:
bashBRPOPLPUSH source destination timeout
-
返回列表中指定区间内的元素,支持负数索引:
bashLRANGE mylist 0 -1
-
将一个或多个值插入到已存在的列表头部:
bashLPUSHX mylist "value1" "value2"
-
将一个或多个值插入到已存在的列表尾部:
bashRPUSHX mylist "value1" "value2"
-
移除并获取列表指定范围内的元素:
bashLTRIM mylist 0 2
-
从列表的一个尾部或多个尾部列表移除元素并将其添加到另一个列表的头部:
bashRPOPLPUSH source destination
集合 (Sets):
-
将一个或多个成员添加到集合中:
bashSADD myset "apple"
-
从集合中移除一个或多个成员:
bashSREM myset "apple"
-
获取集合中的所有成员:
bashSMEMBERS myset
-
判断成员是否属于集合:
bashSISMEMBER myset "apple"
-
获取集合的成员数量:
bashSCARD myset
-
返回多个集合的并集:
bashSUNION key1 key2
-
返回多个集合的交集:
bashSINTER key1 key2
-
返回多个集合的差集:
bashSDIFF key1 key2
-
移除并返回集合中的一个随机元素:
bashSPOP myset
-
从第一个集合移除成员并添加到另一个集合:
bashSMOVE source destination "apple"
-
返回指定数量的随机元素:
bashSRANDMEMBER myset 3
-
从集合中随机获取一个或多个元素:
bashSRANDMEMBER myset 2
-
移除并返回集合中的一个随机元素:
bashSPOP myset
-
迭代集合中的元素:
bashSSCAN myset cursor [MATCH pattern] [COUNT count]
-
获取多个集合的并集并存储在一个新集合中:
bashSUNIONSTORE destination key1 key2
-
获取多个集合的交集并存储在一个新集合中:
bashSINTERSTORE destination key1 key2
-
获取多个集合的差集并存储在一个新集合中:
bashSDIFFSTORE destination key1 key2
-
检查给定成员是否存在于集合:
bashSSCAN myset cursor MATCH "pattern" COUNT count
-
返回集合的基数(集合中元素的数量):
bashSCARD myset
-
获取指定范围的元素:
bashSSCAN myset cursor COUNT count
有序集合 (Sorted Sets):
-
将一个或多个成员添加到有序集合,并指定分数:
bashZADD myzset 1 "one"
-
获取有序集合中指定范围的成员:
bashZRANGE myzset 0 -1 WITHSCORES
-
获取有序集合中指定分数范围的成员:
bashZRANGEBYSCORE myzset 0 5
-
返回有序集合中成员的排名:
bashZRANK myzset "one"
-
获取有序集合中成员的分数:
bashZSCORE myzset "one"
-
移除有序集合中的一个或多个成员:
bashZREM myzset "one"
-
返回有序集合的成员数量:
bashZCARD myzset
-
返回有序集合中指定分数范围内的成员数量:
bashZCOUNT myzset 0 5
-
对有序集合中指定成员的分数进行增减操作:
bashZINCRBY myzset 5 "one"
-
返回有序集合中指定范围内的成员和分数:
bashZRANGE myzset 0 -1 WITHSCORES
-
返回有序集合中指定分数范围内的成员和分数:
bashZRANGEBYSCORE myzset 0 5 WITHSCORES
-
获取有序集合中指定范围的成员,按分数从高到低排序:
bashZREVRANGE myzset 0 -1 WITHSCORES
-
获取有序集合中指定分数范围的成员,按分数从高到低排序:
bashZREVRANGEBYSCORE myzset 5 0 WITHSCORES
-
移除有序集合中指定排名范围内的成员:
bashZREMRANGEBYRANK myzset 0 1
-
移除有序集合中指定分数范围内的成员:
bashZREMRANGEBYSCORE myzset 0 5
总结
这些示例展示了如何使用Redis中的不同命令执行各种操作,包括设置和获取值、操作列表、集合和有序集合,以及如何管理哈希中的字段。