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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值