键的管理

type del object encoding exists expire
1、rename key newkey 重命名键

127.0.0.1:6379> keys *
 1) "myset1"
 2) "hash1"
 3) "hash"
 4) "zset1"
 5) "des2"
 6) "zset"
 7) "myset"
 8) "des3"
 9) "myset2"
10) "des1"
11) "zset2"
12) "set1"
13) "list1"
14) "list2"
127.0.0.1:6379> rename des3 des4
OK
127.0.0.1:6379> keys *
 1) "myset1"
 2) "des4"
 3) "hash1"
 4) "hash"
 5) "zset1"
 6) "des2"
 7) "zset"
 8) "myset"
 9) "myset2"
10) "des1"
11) "zset2"
12) "set1"
13) "list1"
14) "list2"
127.0.0.1:6379> 

2、随机获取一个键
randomkey

127.0.0.1:6379> randomkey
"zset2"

3、设置在什么时间过期
expireat key 时间戳

127.0.0.1:6379> expireat list2 1586598059
(integer) 1
127.0.0.1:6379> 

4、遍历键
(1)key * 返回所有的键
(2)scan 按照指定数量来遍历键,默认10 key* = N*scan
语法:scan cursor [match pattern ] [count number ]
cursor :游标 每次执行scan都会返回一个游标 下次遍历用这个游标可以从上次遍历结束的位置开始,直到返回的游标为0表示遍历完了所有键
scan容易出现的问题: 可能会有遗漏 不能完全遍历到所有的key

127.0.0.1:6379> keys *
 1) "myset1"
 2) "des4"
 3) "hash1"
 4) "hash"
 5) "zset1"
 6) "des2"
 7) "zset"
 8) "myset"
 9) "myset2"
10) "des1"
11) "zset2"
12) "set1"
13) "list1"
127.0.0.1:6379> scan 0
1) "11"
2)  1) "zset1"
    2) "zset2"
    3) "zset"
    4) "myset"
    5) "list1"
    6) "myset1"
    7) "des1"
    8) "des2"
    9) "des4"
   10) "hash1"
   11) "hash"
127.0.0.1:6379> scan 11
1) "0"
2) 1) "set1"
   2) "myset2"
库管理:

16 0-15 默认位置0

select number:移动到别的库
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> 
flushdb/flushall : 清空库里面的键
迁移键:
1、move key dbindex 移动
127.0.0.1:6379> keys *
 1) "myset1"
 2) "des4"
 3) "hash1"
 4) "hash"
 5) "zset1"
 6) "des2"
 7) "zset"
 8) "myset"
127.0.0.1:6379> move myset 3
(integer) 1
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> keys *
1) "myset"
2、dump + restore :在源库里执行 dump key 命令(将key对应的值序列化)然后到目标库 执行restore key 序列化内容

在目标库 执行
restore key ttl serialized-value [ REPLACE ] ttl设置过期时间 ttl必须设置 不设置的话 写0

127.0.0.1:6379> keys *
 1) "myset1"
 2) "des4"
 3) "hash1"
 4) "hash"
 5) "zset1"
 6) "des2"
 7) "zset"
 8) "myset2"
 9) "des1"
10) "zset2"
11) "set1"
12) "list1"
127.0.0.1:6379> dump myset1
"\x0b\x12\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x02\x00\x03\x00\x04\x00\x05\x00\b\x00\x96\x7f0_\xfc\xa8\xe7S"
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> restore newset 30 "\x0b\x12\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x02\x00\x03\x00\x04\x00\x05\x00\b\x00\x96\x7f0_\xfc\xa8\xe7S"
OK
127.0.0.1:6379[3]> keys *
1) "myset"
3、migrate 可以跨主机迁移键

migrate dishost disport key(如果迁移的键不止一个 写空 如 ‘’) dist-db timeout [coppy ] [replace ] [keys key1 key2 …]

dishost : 目标主机
disport : 目标端口
dist-db: 目标库索引
timeout :超时时间
coppy: 表示不删除源库里的键
replace :覆盖目标库同名的键

慢查询:

命令:
slowlog get 查询慢查询日志
slowlog len 显示目前慢查询的条数
slowlog reset 重置慢查询日志

127.0.0.1:6379> slowlog get
1) 1) (integer) 1
   2) (integer) 1586600495
   3) (integer) 1001984
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "myset"
      5) "5"
      6) "0"
   5) "127.0.0.1:52250"
   6) ""
2) 1) (integer) 0
   2) (integer) 1586600429
   3) (integer) 1001484
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "myset"
      5) "4"
      6) "0"
   5) "127.0.0.1:52250"
   6) ""
127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog len
(integer) 0
127.0.0.1:6379> 

redis shell:
【redis-cli】:
【-r】 : -r + count : 表示将命令执行count次
【- i】:每隔几秒钟执行一次 和 -r一起只用
【-x】:从标准输入(stdin)读取数据作为后面redis-cli的参数
【-a】:当redis设置了密码 -a 后面跟密码
【–scan】:遍历键
【–slave 】:作为从节点登录
【–rdb】:备份
【–latency】:查询延迟 客户端到服务器的网络延时
【–latency-history】:分时段查询延时
【–latency-dist】:使用统计形式从控制台输出延迟统计信息
【–stat 】:实时获取redis的重要统计信息

[root@localhost ~]# redis-cli -r 3 ping
PONG
PONG
PONG
[root@localhost ~]# redis-cli -r 3 -i 3 ping   加入 -i  3 之后 每隔三秒ping一次
PONG
PONG
PONG
[root@localhost ~]# 

[root@localhost ~]# echo "allword" | redis-cli -x set nihao
OK
[root@localhost ~]# redis-cli get nihao
"allword\n"

在这里插入图片描述

【redis-server】:
【–test-memory 1024】:检查当前系统是否稳定的给redis分配指定的内存容量


【redis-benchmark 】:可以为redis进行基准性能测试
【-c】:代表客户端并发量 默认50
【-n】:后面跟数字 代表客户端总量 默认100000
【-r】:在一个空的redis上执行redis-benchmark,并向redis里面插入更多的随机键
【-p】:每个请求pipe流水线的数据量
【-k】:代表客户端是否使用keepalive,1为使用 0 不使用

pipeline :流水线
RTT:时延 :发送时延 传输时延 列队时延 结果返回时延
批量执行命令: 5 RTT 1

redis事务:
开启事务:multi
提交事务:exec
取消事务:discard
举例:抖音 关注和粉丝量增加

127.0.0.1:6379> multi
OK
127.0.0.1:6379> sadd userA usera   在用户的被关注列表 增加usera
QUEUED
127.0.0.1:6379> sadd userB usera   在用户的粉丝列表 增加usera
QUEUED
127.0.0.1:6379> exec
1) (integer) 1
2) (integer) 1
127.0.0.1:6379> smembers userA
1) "usera"
127.0.0.1:6379> smembers userB
1) "usera"
127.0.0.1:6379> 

bitmaps:位图 对应的value的值只有 : 0/1
记录用户登陆情况
命令:
1、设置值: setbit key offset value(0/1)
2、获取值: getbit key offset

127.0.0.1:6379> setbit lol 0 1  第一天登录 value=1
(integer) 0
127.0.0.1:6379> setbit lol 1 1 第二天登录 value=1
(integer) 0
127.0.0.1:6379> setbit lol 2 0  第三天未登录 value=0
(integer) 0
127.0.0.1:6379> getbit lol 1   查看到用户第二天 value=1 表示登录
(integer) 1
127.0.0.1:6379> getbit lol 0  查看到用户第一天 value=1 表示登录
(integer) 1
127.0.0.1:6379> getbit lol 2  查看到用户第三天 value=0 表示未登录
(integer) 0
127.0.0.1:6379> 

3、bitcount key start end 获取指定范围内值为1 的个数

127.0.0.1:6379> bitcount lol 0 2
(integer) 2
在第一到第三天 value的值=1的有两天 表示用户登录了两天

4、hyperloglog:可以用极小的内存来统计独立总数;
ip访问量 :独立IP访问量
命令:pfadd pfcount pfmerge
pfadd key member …
pfcount key

127.0.0.1:6379> pfadd ip1 1111 2222 3333 1111 3333 4444
(integer) 1
127.0.0.1:6379> pfadd ip2 1111, 2222, 3333, 1111, 3333, 4444,
(integer) 1
127.0.0.1:6379> pfcount ip2
(integer) 4
127.0.0.1:6379> pfcount ip1
(integer) 4

发布订阅:
消息发布者和消息的订阅者不直接进行通信,订阅者订阅相关的channel,发布者只要在相同的channel发布信息,多有订阅者就能接收到信息
channel :频道
命令:
1、订阅消息:
subscribe channel
psubscribe china* (模糊匹配 在所有带china的频道都可以接收信息 )
2、发布信息:
publish channel message

127.0.0.1:6379> subscribe china1 
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "china1"
3) (integer) 1
1) "message"   在第二台客户端 发布信息后 第一台订阅信息后 收到发布的信息
2) "china1"
3) "nihao"

127.0.0.1:6379> publish china1 nihao
(integer) 1
127.0.0.1:6379> 

3、取消订阅:
unsubscribe channel…
4、查询订阅:
(1)查看订阅的频道:pubsub channels
(2)查询订阅数:pubsub numsub channels

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值