其他
Redis基础都不会,好意思出去面试?
作者:张君鸿
juejin.im/post/5d078cd6f265da1b8466e62c
Redis的数据结构
五种基础数据结构
String:字符串,是构建其他数据结构的基础 Hash:哈希列表 List:列表 Set:集合,在哈希列表的基础上实现 Sort Set:有序集合
复杂的数据结构
Bitmaps:位图,在string的基础上进行位操作,可以实现节省空间的数据结构。 Hyperloglog:用于估计一个 set 中元素数量的概率性的数据结构。 Geo:geospatial,地理空间索引半径查询。 BloomFilter:布隆过滤器。
不同数据结构的相同之处
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命令,时间复杂度O(1)
exists key [key ...]
> set test1 t1
> exists test1 test2
(integer) 1 #只有一个key存在
> exists test3 test3
(integer) 0 #key都不存在
del
# 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命令,时间复杂度为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
当key不存在或过期时间,返回-2。 当key存在且永久有效时,返回-1。 当key有设置过期时间时,返回为剩下的秒数(pttl为毫秒数)
# ttl命令,时间复杂度O(1)
ttl key
# pttl命令,时间复杂度O(1)
pttl key
set test test
expire test 100
ttl test
(integer) 98#返回剩下的秒数
set test1 #永久有效
ttl test1
(integer) -1
ttl test2
(integer) -2#不存在或过期
100秒后
ttl test # test已过期
(integer) -2
expireat,pexpireat
#expireat命令,时间复杂度为O(1)
expireat key timestamp
#pexpireat命令,时间复杂度为O(1)
pexpireat key milliseconds-timestamp
set test test
expireat test 1560873600 # 2019-06-19 00:00:00
(integer) 1
set test1 test1
pexpireat test1 156087360000 # 2019-06-19 00:00:00的毫秒表示
(integer) 1
persist
# persist命令,时间复杂度O(1)
persist key
> set test test
> ttl test
(integer) -1 # 表示永久有效
> persist test
(integer) 0 # 对永久有效或不存在的key使用persist命令,返回
> expire test 10
(integer) 1
> persist test
(integer) 1
type
# type命令,时间复杂度O(1)
type key
set test test
type test
string
hset htest test test
type htest
hash
小结
- END -
关注Java技术栈微信公众号,在后台回复关键字:Java,可以获取一份栈长整理的 Java 最新技术干货。
最近干货分享
点击「阅读原文」加入栈长的战队~