数据库管理
数据库操作命令
处理数据库单个键命令
Type 命令返回类型
none 表示key不存在
string 表示字符串或者HyperLoglog(HLL二进制文件)
hash 散列
list 列表
set 集合
zset 有序集合
DEL key [key...]
key存在则返回删除数量,key不存在返回0
EXISTS key
检查键是否存在,存在返回1,不存在返回0
修改键的名字
RENAME key newkey 将键的名字从key修改为newkey 如果newkey存在就覆盖
RENAMENX key newkey 如果newkey存在不做变更,如果newkey不存在就修改
对键值进行排序
SORT命令
在Redis中,只有列表和有序集合会按照有序的方式来存储值得。
列表按照被推入的顺序来存储
有序集合按照袁术的分值来排列元素
通过SORT命令,可以对列表、集合、有序集合进行排序。对列表和有序集合,SORT命令可以以其他方式来排列他们的值。
SORT key [By pattern][LIMIT offset count][GET pattern [GET pattern...]][ASC|DESC][ALPHA][STORE destination]
SORT命令提供的可选选项以及参数非常多,他们可以修改SORT命令排序行为。
SORT key
将输入键包含的值解释为浮点数,然后对这些浮点数进行排序
升序排序和降序排列
对文字进行排序,通过给定ALPHA参数,按照基于字典排序
文字排序特别适合用于有序集合
基于外部键的值进行排序
在默认情况下SORT命令在排序时,会使用排序键本身,但通过指定BY pattern选项,可以让SORT使用其他键作为排序权重,并对排序键进行排序
首先基于三个元素本身排序
第二次使用sort命令会先获取到 三个元素,然后将他们带入到*-score模式中,得出键名,然后获取这些键的值来作为排序权重
获取外部键的值作为返回值
SORT命令默认返回被排序键的值作为返回值,但通过给定GET pattern选项,可以让SORT命令返回其他键的值来作为命令返回值
对集合进行排序,得出 默认排序,然后将三个元素带入到模式*-name,得出jack-name、peter-name和tom-name三个键,根据这些键获取值作为排序结果
获取多个外部键的值
调用SORT命令可以给定多个GET选项
给定GET # 时,命令会返回被拍下的值本身
制定返回结果的数量
在默认情况,SORT命令总是返回被排序键的所有值为结果,但通过指定LIIT offset count选项,可以让命令在返回结果钱先跳到offset个值,然后返回count个值
如上例,第一个从0开始返回三个值,第二个跳过开头3个值返回下面3个
存储排序结果
STORE destkey 将结果存储
使用多个选项和参数
127.0.0.1:6379> sort team-member-ids by *-KPI get # get *-name get *-KPI
通过KPI值,对团队中个成员的ID进行排序,然后根据排序结果获取成员id,名字,KPI
127.0.0.1:6379> sort names alpha desc get # get *-id get *-name limit 0 5 store profiles
9
127.0.0.1:6379> lrange profiles 0 8
tom
123321
Thomas Edward
peter
10086
Peter Hanson
jack
255255
Jack Sparrow
对names 键的值进行文字形式的降序排序,然后根据排序的前五个值,获取值本身、对应的id,对应的名字 然后存储到profiles键中
通过命令获取数据库键
返回数据库中与给定模式匹配的键
keys pattern
keys * 返回数据库中所有的键
keys h?llo 返回匹配h?llo的所有的键比如hello/hxllo等
keys h*llo 返回匹配*表任意个
keys h[ae]llo 返回匹配中间字母a或者e 如hello、hallo但是其他字母不可以
渐进地遍历整个数据库
SCAN 命令
SCAN cursor [MATCH pattern] [COUNT number]
KEYS与SCAN命令的差异
keys一次遍历整个数据库 scan每次遍历数据库中一部分键返回一部分结果
keys可能会阻塞服务器 scan一般不会阻塞服务器
keys不会出现重复值 scan可能会出现重复着
127.0.0.1:6379> scan 0 设置游标为0,开始一次新的遍历
6 返回下次进行遍历的游标
fruits-8-13 返回的键
meng::age
jack-score
fruits-price
message
127.0.0.1:6379> scan 6 使用上次返回的游标继续遍历
9
peter-name
sorted-numbers
new-key
127.0.0.1:6379> scan 9
43
msg
names
meng::email
tom-id
127.0.0.1:6379> scan 43
0 表示遍历已结束
peter-score
profiles
scores
其他渐进遍历命令
SSCAN key cursor [MATCH pattern][COUNT count]
代替可能会阻塞服务器的SMEMBERS命令,遍历集合包含的各个元素
HSCAN key cursor [MATCH pattern][COUNT count]
代理可能会阻塞服务器的HGETALL命令,遍历散列博涵的各个键值对
ZSCAN key cursor [MATCH pattern][COUNT count]
代替可能会阻塞服务器的ZRANGE命令,遍历有序集合包含的各个元素
处理数据库本身
获取数据看大小
DBSIZE 返回数据库包含的键值对数量
127.0.0.1:6379> DBSIZE
34
127.0.0.1:6379> rpush numbers11 1 2 3
3
127.0.0.1:6379> DBSIZE
35
清空当前数据库 删除所有的键值对
FLUSHDB
切换数据库
默认会建15个库,切换数据库使用select db如select 1 切换到数据库1
在数据库之间移动键值
MOVE key target-db
将当前数据库中的key移动到target-db中去,如果key不存在火灾target-db中已经存在同样的键则不会移动
127.0.0.1:6379> dbsize
35
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
0
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> move numbers11 1
1
127.0.0.1:6379> dbsize
34
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
1
清空所有数据库
FLUSHALL 清空Redis服务器包含的所有数据库,也就是所有数据库里面的所有的键值对