redis的数据结构
Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景 。

文章插图
五种基础数据结构
- String:字符串,是构建其他数据结构的基础
- Hash:哈希列表
- List:列表
- Set:集合,在哈希列表的基础上实现
- Sort Set:有序集合
- Bitmaps:位图,在string的基础上进行位操作,可以实现节省空间的数据结构 。
- Hyperloglog:用于估计一个 set 中元素数量的概率性的数据结构 。
- Geo:geospatial,地理空间索引半径查询 。
- BloomFilter:布隆过滤器 。
从上面的介绍,我们看到支持的数据结构的不同,但其实,Redis的每一种数据结构都由一个key和value组成,可以抽象为:

文章插图
而所有数据结构的key的值都是任意合法的字符串,不同的数据结构的区别就在于value存储的值的不同而不同 。
比如,最简简单的String数据结构,其value为String,所以String可以表示为:

文章插图
而Hash数据结构,其value为一个哈希列表,所以Hash可以表示为:

文章插图
这里就列出String和Hash来讲解说明,关于更多数据结构的内部结构及详细操作,我们在之后的文章在再谈谈吧 。
Redis的通用命令
Redis官网将Redis的命令按照功能划分为15个主题分组,其中,Kyes主题的命令对所有的数据结构都通用,因此,有必要在了解其他数据结构命令前好好学习一下 。
keys
keys命令的作用是列出Redis所有的key,该命令的时间复杂度为O(N),N随着Redis中key的数量增加而增加,因此Redis有大量的key,keys命令会执行很长时间,而由于Redis是单线程,某个命令耗费过长时间,则会导致后面的的所有请求无法得到响应,因此,千万不要在生产服务器上使用keys命令 。
# key命令,时间复杂度为O(n)keys pattern #pattern可为一个包含匹配模式的字符串,可以包含*,+,?,[a-z]等模式 。复制代码示例
> mset hello_test1 one hello_test2 two helloa a hellob b> keys hello*1) "hello_test1"2) "hello_test2"3) "helloa"4) "hellob"> keys heelo?1) "helloa"2) "hellob"> keys hello[a-z]1) "helloa"2) "hellob"复制代码exists
exists命令用于判断一个或多个key是否存在,判断多个key时,key之间用空格分隔,exists的返回值为整数,表示当前判断有多少个key是存在的 。
# exists命令,时间复杂度O(1)exists key [key ...]复制代码示例
> set test1 t1> exists test1 test2 (integer) 1 #只有一个key存在> exists test3 test3(integer) 0 #key都不存在复制代码del
del命令用于删除一个或多个key,多个key之间用空格分隔,其返回值为整数,表示成功删除了多少个存在的key,因此,如果只删除一个key,则可以从返回值中判断是否成功,如果删除多个key,则只能得到删除成功的数量 。
# del命令,时间复杂度O(n)del key [key ...]复制代码示例
> set test t> del test(integer) 1> mset test1 2 test2 1> del test1 test2 test3(integer) 2 # 返回2,表示成功删除两个#再次删除,返回0,因为删除成功个数为0> del test1 test2 test3(integer) 0复制代码expire,pexpire
expire设置key在多少秒之后过期,pexpire设置key在多少毫秒之后过期,成功返回1,失败返回0 。
# expire命令,时间复杂度为O(1) expire key seconds # pexpire命令,时间复杂度为O(1) pexpire key milliseconds 复制代码
示例
> mset test test_value test1 test1_value> expire test 10 #设置10秒后过期(integer) 1> pexpire test1_value 10000 #设置10000毫秒(10s)后过期(integer) 1> expire ttt 100(integer) 0 # 不存在的key,设置失败,返回0 复制代码ttl,pttl
ttl和pttl命令用于获取key的过期时间,其返回值为整型,代表的意义分为几种情况:
- 当key不存在或过期时间,返回-2 。
- 当key存在且永久有效时,返回-1 。
- 当key有设置过期时间时,返回为剩下的秒数(pttl为毫秒数)
推荐阅读
- 玉蝴蝶茶的功效
- 求职|高校“非升即走”政策:被和尚念歪了的“正经”
- 梦见赶海捡海螺好不好 梦见赶海捡海螺和海参
- 蜜粉和粉饼的区别 原来是这样
- 梦到去世的母亲还活着是什么意思 梦到去世的母亲和我说话
- mac哪款粉底液遮瑕效果好 雅诗兰黛dw和mac定制无暇哪个更遮瑕
- 怎样用香蕉皮美容,香蕉皮的6种功效和作用
- 绿茶和枸杞不宜一起泡着喝
- 黄茶三大种类:黄芽茶黄小茶和黄大茶的区别
- 梦见以前的同学和老师是什么意思 周公解梦梦见以前的老师和同学