redis学习--基础2 数据类型 keys

1.keys

redis本质上是一个key-value的DB,所以我们首先看一下他的key吧。首先key也是字符串类型,所以key中不能有包括边界字符。由于key不是binary safe的字符串,所以像含有空格和换行的key也是不允许的(如"my key" 和“mykey\n")。

关于key的一个格式约定介绍下:object-type:id:field 比如 user:1000:password

还有key的长度最好不要太长,道理很明显占用内存,而且查找时候相对短key也更慢。不过也不推荐过短key,可读性不好。


介绍下key相关的命令

exists key 测试指定key是否存在,返回1表示存在,0不存在

del key1,key2.....keyN 删除给定key,返回删除key的数目

[/u1/yyang/study/redis/redis-2.6.10/src] (127)yyang@dcmvrh12#redis-cli
redis 127.0.0.1:6379> set mykey "hello world"
OK
redis 127.0.0.1:6379> get mykey
"hello world"
redis 127.0.0.1:6379> exists mykey
(integer) 1
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> exists mykey
(integer) 0
redis 127.0.0.1:6379>


type key 返回给定key的value类型,返回none表示不存在key,string字符类型,list链表类型,set 无序集合类型等

keys pattern返回匹配指定模式所有的key

keys * 表示匹配数据库中所有的key

keys h?llo 匹配 hello , hallo 和 hxllo 等。
keys h*llo 匹配 hllo 和 heeeeello 等。
keys h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开
警告:KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。

redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> exists mykey
(integer) 0
redis 127.0.0.1:6379> type mykey
none
redis 127.0.0.1:6379> set mykey "hello"
OK
redis 127.0.0.1:6379> set myclass "math"
OK
redis 127.0.0.1:6379> set myface "big"
OK
redis 127.0.0.1:6379> keys my*
1) "myclass"
2) "mykey"
3) "myface"
redis 127.0.0.1:6379> keys my[cf]*
1) "myclass"
2) "myface"
redis 127.0.0.1:6379> keys *
1) "myclass"
2) "mykey"
3) "myface"

randomkey 从当前数据库中随机返回(不删除)一个key,当数据库不为空时,返回一个key。当数据库为孔氏返回nil。

redis 127.0.0.1:6379> randomkey
"myclass"
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> del myclass
(integer) 1
redis 127.0.0.1:6379> del myface
(integer) 1
redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379> randomkey
(nil)
redis 127.0.0.1:6379>


flushdb是删除数据库中的所有key,此方法不会失败,慎用。

redis 127.0.0.1:6379> set mykey "abc"
OK
redis 127.0.0.1:6379> keys *
1) "mykey"
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379>

ttl key 以秒为单位返回给定key的剩余生存时间(TTL,time to live),返回值:当key不存在是返回-2,当key存在但没有设置剩余生存时间时,返回-1,否则以秒为单位返回key的剩余生存时间。注意:在Redis 2.8以前,当key不存在,或者key没有设置剩余生存时间时,命令都返回-1。

redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379> set mykey "abc"
OK
redis 127.0.0.1:6379> ttl mykey
(integer) -1
redis 127.0.0.1:6379> ttl abc
(integer) -1
dbsize返回当前数据库key的数量
redis 127.0.0.1:6379> dbsize
(integer) 1
redis 127.0.0.1:6379> set test "hello"
OK
redis 127.0.0.1:6379> keys *
1) "test"
2) "mykey"
redis 127.0.0.1:6379> dbsize
(integer) 2
redis 127.0.0.1:6379>

rename oldkey newkey 原子的重命名一个key,如果newkey存在则呗覆盖,返回1表示成功,0表示失败。可能是oldkey不存在或者newkey相同。

renamenx oldkey newkey与rename一样,但是如果newkey存在的话返回失败。即当且仅当newkey不存在时,将oldkey改名为newkey。

redis 127.0.0.1:6379> keys *
1) "test"
2) "mykey"
redis 127.0.0.1:6379> get test
"hello"
redis 127.0.0.1:6379> rename test grant
OK
redis 127.0.0.1:6379> get test
(nil)
redis 127.0.0.1:6379> get grant
"hello"
redis 127.0.0.1:6379> get mykey
"abc"
redis 127.0.0.1:6379> renamenx mykey grant
(integer) 0
redis 127.0.0.1:6379> get mykey
"abc"
redis 127.0.0.1:6379> keys*
(error) ERR unknown command 'keys*'
redis 127.0.0.1:6379> keys *
1) "grant"
2) "mykey"
redis 127.0.0.1:6379> renamenx mykey youkey
(integer) 1

就先到这吧,命令都是先用现查也没关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值