AIOps 一场颠覆传统运维的盛筵
761
2022-11-09
REDIS对键值的基础操作
REDIS对键值的基础操作
我们今天就简单说一说对key的操作,日后的文章就会针对redis的数据类型做一个详细的介绍。
新建一个key,并且赋值
127.0.0.1:6379> set new n1
OK
查看一个key
127.0.0.1:6379> get new
"n1"
删除一个key
127.0.0.1:6379> del new
(integer) 1
127.0.0.1:6379> get new
(nil)
序列化key
dump key
127.0.0.1:6379> set new n1
OK
127.0.0.1:6379> dump new
"\x00\x02n1\b\x00)\xa5t\xbb\xc2\x01\x1a\x16"
序列化key的值,返回被序列化的值,并且使用Restore可以将这个值反向序列化成redis的键。
使用这个序列化的值可以恢复数据到一个新的key当中。使用的方法是restore,我们看下restore的用法。
192.168.1.60:6379> restore key ttl serialized-value [REPLACE]
192.168.1.60:6379> restore new_test 0 "\x00\x02n1\b\x00)\xa5t\xbb\xc2\x01\x1a\x16"
OK
192.168.1.60:6379> get new_test
"n1"
restore 是将序列化的数据反向序列化。使其显示出正常的value,参数ttl为key 的生存时间,单位为ms,超过规定的ttl的时间之后,新的key将会释放掉。
如果ttl设置成0 ,那么这个表不会被释放。
192.168.1.60:6379> restore new_test1 1000 "\x00\x02n1\b\x00)\xa5t\xbb\xc2\x01\x1a\x16"
OK
192.168.1.60:6379> get new_test1
"n1"
192.168.1.60:6379> get new_test1
(nil)
检验key是否存在
exists key
192.168.1.60:6379> keys *
1) "rr"
2) "name"
3) "new_test"
4) "cui"
5) "foo"
6) "test2"
7) "user:"
8) "test"
9) "new"
10) "test1"
192.168.1.60:6379> exists cui
(integer) 1
192.168.1.60:6379> exists diaosi
(integer) 0
key存在返回1 ,不存在返回0
为key设置过期时间
expire key seconds
192.168.1.60:6379> lpush aa t1
(integer) 1
192.168.1.60:6379> expire aa 10
(integer) 1
192.168.1.60:6379> lpush aa t2
(integer) 2
192.168.1.60:6379> lrange aa 0 100
(empty list or set)
当设置了expire的参数的key会在设置的规定时间当中自动的删除掉,redis有一条这样的规定,如果这个key没有被新的值替代的化,这个key的生存时间是不会改变的,就如我们上面的实例所述,我设置了expire的时间是10s,之后lpush了一个值在key当中,但是到了10s之后key还是被删掉了。
我们现在用新的value覆盖掉之前的key
192.168.1.60:6379> set cui aaaaa
OK
192.168.1.60:6379> expire cui 10
(integer) 1
192.168.1.60:6379> set cui aaa
OK
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
192.168.1.60:6379> get cui
"aaa"
会发现失效的时间就不再生效了。
*注意,如果采用rename的话rename之前的key的话,生存时间和之前的key是一样的。
当然也可以手动将expire取消掉,就是使用persist
192.168.1.60:6379> set cui 1111
OK
192.168.1.60:6379> get cui
"1111"
192.168.1.60:6379> expire cui 10
(integer) 1
192.168.1.60:6379> persist cui
(integer) 1
192.168.1.60:6379> 10S later
(error) ERR unknown command `10S`, with args beginning with: `later`,
192.168.1.60:6379> get cui
"1111"
通过命令ttl key,可以看到过期时间还剩多少
192.168.1.60:6379> expire cui 15
(integer) 1
192.168.1.60:6379> ttl cui
(integer) 13
192.168.1.60:6379> ttl cui
(integer) 11
192.168.1.60:6379> ttl cui
(integer) 10
如果是永久的则这个值是-1
当然expire命令也可以将过期时间的粒度缩短到其他的级别:
expireat key timestamp 以时间戳为单位
pexpire key milliseconds 时间是ms为单位
如果以ms为过期时间的话,查看过期时间使用pttl keys当然这个恐怕没有意义。
查看键的数据类型
使用type key的命令
192.168.1.60:6379> type rr
set
192.168.1.60:6379> type test
hash
192.168.1.60:6379> type user:
hash
192.168.1.60:6379> type new
string
192.168.1.60:6379> type test1
list
that's all
by cui peace !!!
发表评论
暂时没有评论,来抢沙发吧~