Redis功能使用(一)数据库
Redis数据库
Redis数据库
一个高性能的 key-value 数据库
数据库操作
切换数据库
默认情况下,Redis服务器启动时会创建16个数据库,使用号码0-15标识,默认使用0号数据库。不同数据库拥有不同的命名空间,因此不同数据库可拥有同名的键。
select DBID
127.0.0.1:6379> keys list*
1) "list11"
2) "list1"
3) "list2"
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys list*
(empty array)
127.0.0.1:6379[2]>
获取数据库键值对数量
dbsize
127.0.0.1:6379> dbsize
(integer) 66
清空数据库
清空所有数据库。
flushall [ASYNC|SYNC]
清空当前数据库。
flushdb [ASYNC|SYNC]
ASYNC选项可指定异步方式,后台线程执行。
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> flushall
OK
互换数据库
swapdb index1 index2
键操作
匹配模式获取键
可使用的通配符有:*,匹配0个或任意多个字符;?,匹配单个字符;[str],匹配给定字符串中的单个字符;[?-?],匹配范围内单个字符。
keys pattern
127.0.0.1:6379> keys list*
1) "list11"
2) "list1"
3) "list2"
127.0.0.1:6379> keys list1
1) "list1"
127.0.0.1:6379> keys list
(empty array)
127.0.0.1:6379> keys *
1) "article::001"
2) "b1"
3) "house"
4) "st1"
5) "soft"
6) "bb1"
7) "song"
迭代数据库中的键
keys命令会检查库中所有键,一次性将符合条件的所有键返回。Redis提供了迭代器scan命令,每次获取库中一部分键,重复执行来迭代获取符合条件的键。
scan cursor [MATCH pattern] [COUNT count] [TYPE type]
cursor为0开始一次新的迭代,scan每次会返回数量不确定的键且可能包含重复键,返回的结果包括下一次迭代开始的游标和一个元素列表。count可设置期望返回的键数量但不保证按count返回,默认为10。
127.0.0.1:6379> scan 0
1) "12"
2) 1) "hyq"
2) "count"
3) "bignum"
4) "thousand"
5) "mountain"
6) "hello"
7) "soft"
8) "msg"
9) "list2"
10) "bor"
11) "pi"
......
127.0.0.1:6379> scan 39
1) "0"
2) 1) "db11"
2) "book"
3) "db1"
127.0.0.1:6379>
127.0.0.1:6379> scan 0 match list*
1) "12"
2) 1) "list2"
......
127.0.0.1:6379> scan 10 match list*
1) "25"
2) (empty array)
127.0.0.1:6379> scan 25 match list*
1) "61"
2) 1) "list1"
127.0.0.1:6379> scan 61 match list*
1) "39"
2) 1) "list11"
127.0.0.1:6379> scan 39 match list*
1) "0"
2) (empty array)
127.0.0.1:6379> scan 0 count 5
1) "24"
2) 1) "hyq"
2) "count"
3) "bignum"
4) "thousand"
5) "mountain"
127.0.0.1:6379> scan 24 count 5
1) "12"
2) 1) "hello"
2) "soft"
3) "msg"
4) "list2"
5) "bor"
6) "pi"
127.0.0.1:6379>
127.0.0.1:6379> scan 0 type hash
1) "12"
2) (empty array)
......
127.0.0.1:6379> scan 10 type hash
1) "25"
2) 1) "article::001"
2) "article::002"
127.0.0.1:6379> scan 0 type hasa
1) "12"
2) (empty array)
......
为解决数据结构中可能的阻塞,Redis为散列、集合和有序集合也提供了迭代命令。
hscan key cursor [MATCH pattern] [COUNT count]
127.0.0.1:6379> hscan article::002 0
1) "0"
2) 1) "view_count"
2) "1"
127.0.0.1:6379> hgetall article::002
1) "view_count"
2) "1"
sscan key cursor [MATCH pattern] [COUNT count]
127.0.0.1:6379> sscan soft 0
1) "0"
2) 1) "idea"
2) "mysql"
3) "shell"
127.0.0.1:6379> smembers soft
1) "idea"
2) "mysql"
3) "shell"
127.0.0.1:6379> type soft
set
127.0.0.1:6379> sscan set3 0
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> type set3
zset
zscan key cursor [MATCH pattern] [COUNT count]
127.0.0.1:6379> zscan set3 0
1) "0"
2) 1) "a"
2) "1"
3) "b"
4) "2"
5) "d"
6) "4"
7) "e"
8) "5"
9) "c"
10) "6"
127.0.0.1:6379> zrange set3 0 10 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "d"
6) "4"
7) "e"
8) "5"
9) "c"
10) "6"
随机返回一个键
randomkey
127.0.0.1:6379> randomkey
"hello"
127.0.0.1:6379[2]> randomkey
(nil)
检查给定键是否存在
exists key [key ...]
127.0.0.1:6379> exists set1
(integer) 1
127.0.0.1:6379> exists set1 sset
(integer) 1
127.0.0.1:6379> exists sset
(integer) 0
查看键的类型
type key
127.0.0.1:6379> type world
string
127.0.0.1:6379> type h1
none
127.0.0.1:6379> type set1
set
127.0.0.1:6379> type guangdong
zset
127.0.0.1:6379> type article::002
hash
修改键名
可直接覆盖已存在的键。
rename key newkey
或只在新键名不存在时修改。
renamenx key newkey
127.0.0.1:6379> rename set3 sset
OK
127.0.0.1:6379> rename set3 sset
(error) ERR no such key
127.0.0.1:6379> renamenx sset h1
(integer) 1
127.0.0.1:6379> renamenx h1 world
(integer) 0
移动键
将指定键移动到另一个数据库,当目标数据库已有同名键时放弃执行。
move key db
127.0.0.1:6379> get world
"beauty"
127.0.0.1:6379> move world 2
(integer) 1
127.0.0.1:6379> get world
(nil)
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "world"
移除键
同步方式移除。
del key [key ...]
异步方式移除,执行时只移除了对键的引用,实际移除操作在后台线程执行。
unlink key [key ...]
127.0.0.1:6379> del db1111 st2 pi
(integer) 3
127.0.0.1:6379> del db1111 st2 pi
(integer) 0
127.0.0.1:6379> unlink band hy
(integer) 2
127.0.0.1:6379> unlink band hy
(integer) 0
值操作
对键的值排序
通过sort命令可对列表元素、集合元素或有序集合成员进行排序,默认进行数字值排序,按从小到大的顺序返回排序后的各个值。
sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
ALPHA选项指定使用字符串排序而非数字值排序,LIMIT选项可获取部分结果,offset指定跳过的元素数量,count指定需获取数量。当使用BY选项时,SORT命令将不再依据元素自身的值进行排序,而是按照给定pattern组合成新的key,并按照新key中对应的内容进行排序,新key无时默认内容为0。GET选项可获取外部键的值作为结果。pattern可接受包含*的字符串、包含*和->的字符串、#。
127.0.0.1:6379> sort set3
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort set3 alpha
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> sort set3 alpha limit 0 1
1) "a"
127.0.0.1:6379> sort set3 alpha limit 2 2
1) "c"
2) "d"
127.0.0.1:6379> sadd set1 5 8 2 6 50 9
127.0.0.1:6379> hset p:5 time 200
(integer) 1
127.0.0.1:6379> hset p:7 time 100
(integer) 1
127.0.0.1:6379> hset p:2 time 600
(integer) 1
127.0.0.1:6379> hset p:6 time 500
(integer) 1
127.0.0.1:6379> sort set1 by p:*->time
1) "50"
2) "8"
3) "9"
4) "5"
5) "6"
6) "2"
127.0.0.1:6379> sort set1 get p:*->time
1) "600"
2) "200"
3) "500"
4) (nil)
5) (nil)
6) (nil)
更多推荐
所有评论(0)