redis 补充(1)基本命令

一、redis常用命令

1.1 检测redis是否启动

127.0.0.1:6379> ping
PONG

1.2 远程服务器上执行命令

ybx@ybx-PC:~$ redis-cli -h 127.0.0.1 -p 6379 -a 12345678
127.0.0.1:6379> 

1.3 避免中文乱码

ybx@ybx-PC:~$ redis-cli --raw
127.0.0.1:6379> 

1.4 序列化key值

127.0.0.1:6379> dump a
"\x00\x03qwe\a\x00\xb2\xbe\x91\xde\xed7]\xed"

1.5 检查给定的key是否存在

127.0.0.1:6379> exists a
(integer) 1

1.6 设置key的过期时间

127.0.0.1:6379> expire a 12
(integer) 1

1.7 查找给定模式的key

127.0.0.1:6379> keys *
 1) "stu1"

1.8 使用某个数据库

127.0.0.1:6379> select 1
OK

1.9 将当前key移动到某个数据库

127.0.0.1:6379[1]> move a 0
(integer) 1

1.10 移除某个key的过期时间

127.0.0.1:6379> persist a 
(integer) 1

1.11 查看key的剩余过期时间

  • 以秒为单位
127.0.0.1:6379> ttl a
(integer) -1
  • 以毫秒为单位
127.0.0.1:6379> pttl a
(integer) -1

1.12 查看key的类型

127.0.0.1:6379> type key
string

二、string类型相关命令

2.1 同时设置key-value对

127.0.0.1:6379> mset key1 value1 key2 value2
OK

2.2 key自增1

127.0.0.1:6379> get key
"1"

2.3 给key加上特定的值

127.0.0.1:6379> incrby key 3
(integer) 4

2.4 string类型存储容量

键最大可存储512m。

2.5 setnx

只有当key值不存在时才会设置成功

三、redis其他命令

3.1 发布订阅模型

  • 订阅某个频道
127.0.0.1:6379> subscribe cctv19
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv19"
3) (integer) 1
1) "message"
2) "cctv19"
3) "new-msessage"
1) "message"
2) "cctv19"
3) "new messgae"
  • 向该频道发送消息
127.0.0.1:6379> publish cctv19 'new messgae'
(integer) 1

3.2 redis中的事务操作

  • multi
    标记一个事务的开始

  • exec
    执行事务块中的所有指令

  • discard
    取消事务块中的所有指令

  • watch
    Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

  • 回滚
    事务中出现报告错误,事务才会取消
    报告错误就是语法错误
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set new-key 12
QUEUED
127.0.0.1:6379> 12121
(error) ERR unknown command '12121'
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
  • watch
    用来监视某一个key,即如果在一个事务中操作这个key,但是在其他事务中修改了这个key,则这个事务就会执行失败。
  • unwatch
    取消对某个key的监视

3.3 redis连接命令

  • ahth password
    输入密码
  • quit
    关闭当前连接
  • select num
    切换到指定数据库

3.4 服务器相关命令

  • bgsave
    异步的将数据保存到磁盘上,会fork一个子进程去做这件事
  • bgwriteaof
    异步执行一个aof文件的重写操作,重写会创建一个当前 AOF 文件的体积优化版本。即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。
  • 列出所有已连接的客户端
127.0.0.1:6379> client list
id=2 addr=127.0.0.1:56742 fd=5 name= age=59 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
  • 杀死当前客户端的连接
127.0.0.1:6379> client kill 127.0.0.1:56742
OK
  • 获取当前链接的名称
127.0.0.1:6379> client getname
(nil)
  • redis config set
    Redis Config Set 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。

  • dbsize
    Redis Dbsize 命令用于返回当前数据库的 key 的数量。

  • flushall
    Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。

  • role
    Redis Role 命令查看主从实例所属的角色,角色有master, slave, sentinel。

127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty list or set)
  • save
    Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。

  • sync
    同步主从服务器

四、redis高级命令

4.1 数据备份与恢复

  • save
    该命令将在 redis 安装目录中创建dump.rdb文件。

  • 数据恢复
    如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。

  • 获取redis目录

127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
  • Bgsave
    创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

4.2 redis安全

  • 查看是否设置了密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "12345678"
  • 设置密码
127.0.0.1:6379> config set requirepass 123456
OK
  • 密码登录
auth 123456

4.3 redis性能测试

Redis 性能测试是通过同时执行多个命令实现的。

1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节的形式指定SET/GET 值的数据大小 2
7-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 请求1
10-q强制退出 redis。仅显示 query/sec 值
11–csv以 CSV 格式输出
12-l生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14-IIdle 模式。仅打开 N 个 idle 连接并等待。
  • 基本命令
redis-benchmark [option] [option value]

注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。

ybx@ybx-PC:/var/lib$ redis-benchmark -n 10000 -q
PING_INLINE: 114942.53 requests per second
PING_BULK: 116279.06 requests per second
SET: 114942.53 requests per second
GET: 114942.53 requests per second
INCR: 117647.05 requests per second
LPUSH: 114942.53 requests per second
RPUSH: 117647.05 requests per second
LPOP: 117647.05 requests per second
RPOP: 116279.06 requests per second
SADD: 117647.05 requests per second
SPOP: 117647.05 requests per second
LPUSH (needed to benchmark LRANGE): 116279.06 requests per second
LRANGE_100 (first 100 elements): 117647.05 requests per second
LRANGE_300 (first 300 elements): 116279.06 requests per second
LRANGE_500 (first 450 elements): 116279.06 requests per second
LRANGE_600 (first 600 elements): 116279.06 requests per second
MSET (10 keys): 119047.62 requests per second
ybx@ybx-PC:/var/lib$ redis-benchmark -h 127.0.0.1 -p 6379 -t set, get, lpush -n 10000 -q
====== get, lpush -n 10000 -q ======
  100000 requests completed in 0.84 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.92% <= 1 milliseconds
100.00% <= 1 milliseconds
119331.74 requests per second

4.3 redis客户端链接

  • 最大连接数
127.0.0.1:6379> config get maxclients
1) "maxclients"
2) "10000"
  • 以下实例我们在服务启动时设置最大连接数为 100000:
redis-server --maxclients 100000
1CLIENT LIST返回连接到 redis 服务的客户端列表
2CLIENT SETNAME设置当前连接的名称
3CLIENT GETNAME获取通过 CLIENT SETNAME 命令设置的服务名称
4CLIENT PAUSE挂起客户端连接,指定挂起的时间以毫秒计
5CLIENT KILL关闭客户端连接

4.4 redis管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
服务端处理命令,并将结果返回给客户端。

4.5 redis 分区

4.6 redis多数据库

  • select num
    选择某个数据库
  • move key db
    将key移动到某个数据库
  • flushdb
    清楚当前数据库所有key
  • flushall
    清楚所有数据库的key

五、redis配置文件

5.1 建议修改

  • 以守护进程的方式运行
  • 注释掉 bind 127.0.0.1
  • 设置密码

5.2 关闭命令

  • kill -9 pid
    不安全,容易造成数据丢失
  • shutdown
    安全,不会造成数据丢失

5.3 key的有效问题

  • 0代表还有0秒过期
  • -1代表永久有效
  • -2代表失效

六、Hash类型有关命令

6.1 hset

设置一对key,value 值,value值也是一个键值对

127.0.0.1:6379> hset user1 name ybx
(integer) 1

6.2 hmset

是指一个key,多个value值,value值也是一个键值对

127.0.0.1:6379> hmset user1 name ybx age 23
OK

6.3 HEXISTS

查看字段是否存在

127.0.0.1:6379> hexists user1 name
(integer) 1

6.4 HGETALL

获取所有的字段

127.0.0.1:6379> hgetall user1
1) "name"
2) "ybx"
3) "age"
4) "23"

6.5 HINCRBY

为字段加上某一个值

127.0.0.1:6379> hincrby user1 age 4
(integer) 27

6.6 hkey

获取value中所所有字段

127.0.0.1:6379> hkeys user1
1) "name"
2) "age"

6.7 HLEN

获取哈希表中字段的数量

127.0.0.1:6379> hlen user1
(integer) 2

6.8 HVALS

获取哈希表中所有值

127.0.0.1:6379> hvals user1
1) "ybx"
2) "27"

6.9 hdel

删除某一个字段

127.0.0.1:6379> hlen user1
(integer) 1

6.10 del

可以直接删除hash类型

127.0.0.1:6379> del user1
(integer) 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值