Redis基础知识入门

一、redis-benchmark redis自带的压力测试工具!

如果按照默认路径安装,该工具安装在路径/usr/local/bin目录下


可选参数说明:

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

下面来测试下100个并发连接数,100000个请求
命令:redis-benchmark -h localhost -p 6379 -c 100 -n 100000
部分结果及说明如下:

[root@VM_0_2_centos bin]# redis-benchmark -h localhost -p 6379 -c 100 -n 100000
====== PING_INLINE ======
  100000 requests completed in 1.86 seconds # 100000个请求在1.86秒内请求完毕
  100 parallel clients # 每次请求有100个并发客户端
  3 bytes payload  # 每次写入 3 个字节的数据
  keep alive: 1  # 保持一个连接,一台服务器来处理这些请求的
  host configuration "save": 900 1 300 10 60 10000 # 当前快照触发条件配置,表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。满足任何一个就会触发RDB备份
  host configuration "appendonly": no # 未开启aof持久化
  multi-thread: no #未开启多线程模式

0.00% <= 0.6 milliseconds
0.01% <= 0.7 milliseconds
3.88% <= 0.8 milliseconds
12.60% <= 0.9 milliseconds
22.23% <= 1.0 milliseconds
32.01% <= 1.1 milliseconds
41.79% <= 1.2 milliseconds
51.48% <= 1.3 milliseconds
61.08% <= 1.4 milliseconds
70.63% <= 1.5 milliseconds
80.23% <= 1.6 milliseconds
89.56% <= 1.7 milliseconds
94.38% <= 1.8 milliseconds
96.58% <= 1.9 milliseconds
97.68% <= 2 milliseconds
99.37% <= 3 milliseconds
99.64% <= 5 milliseconds
99.67% <= 6 milliseconds
99.80% <= 7 milliseconds
99.83% <= 8 milliseconds
99.90% <= 9 milliseconds
99.96% <= 10 milliseconds
100.00% <= 10 milliseconds # 所有的请求在10豪秒内完成 
53792.36 requests per second  # 每秒处理的请求次数 53792.36

二、Redis的库操作

redis默认有16个数据库,类似数组,下标从0开始,每个数据库相对独立,默认是0号数据库,我们可以在redis.conf配置中看到如下相关配置



下面是对Redis的库操作命令演示

localhost:6379> set name along    # 在默认数据库中设置值
OK
localhost:6379> get name
"along"
localhost:6379> select 2    # 切换到2号数据库
OK
localhost:6379[2]> get name    # 2号数据库中没有数据,说明每个数据库都是相对独立的
(nil)
localhost:6379[2]> select 0    # 切换回0号数据库
OK
localhost:6379> dbsize    # 查看当前数据库中总的数据总数
(integer) 1
localhost:6379> keys *    # 查看当前所有的key(生产环境谨慎使用)
1) "name"
localhost:6379> flushdb    # 清空当前数据库(生产环境不要使用)
OK
localhost:6379> keys *
(empty array)
localhost:6379> flushall    # 清空所有数据库(生产环境不要使用)
OK

三、Redis的键操作

keys:查看数据库中已存在的key,支持正则表达式查找
语法:keys pattern

localhost:6379> keys *   # 查看所有的key(生产环境慎用)
1) "China:city:1"
2) "USA:city:1"
3) "China:city:3"
4) "China:city:2"
5) "USA:city:2"
localhost:6379> keys China*    # 查找以China开头的key
1) "China:city:1"
2) "China:city:3"
3) "China:city:2"
localhost:6379> keys USA*    # 查看以USA开头的key
1) "USA:city:1"
2) "USA:city:2"

exists:判断一个或多个key是否存在,会返回存在的key的数量
语法:exists key [key ...]

localhost:6379> exists name
(integer) 1
localhost:6379> exists name name2
(integer) 2
localhost:6379> exists name name3
(integer) 1

move:将当前库的一个key移动到另一个库
语法:move key db

localhost:6379> move China:city:1 1    # 将名为China:city:1的key移动到1号数据库
(integer) 1
localhost:6379> get China:city:1    # 当前数据库中没有这个key了
(nil)

expire:为已存在的key设置过期时间
语法:expire key seconds

localhost:6379> set name along
OK
localhost:6379> get name
"along"
localhost:6379> expire name 5  # 设置值为name的key的过期时间为5秒
(integer) 1
localhost:6379> ttl name    # 查看name的状态
(integer) 4
localhost:6379> 
localhost:6379> ttl name
(integer) 2
localhost:6379> ttl name
(integer) 1
localhost:6379> ttl name
(integer) -2  # 负数表示已过期
localhost:6379> get name
(nil)

set 的可选参数
set 语法:set key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]
EX seconds|PX milliseconds:设置值的同时设置过期时间

localhost:6379> set name along ex 10    # 设置key的同时设置过期时间为10s
localhost:6379> set name along px 10000    # 设置key的同时设置过期时间为10000ms

NX:只有在key不存在时才创建

localhost:6379> set name along nx
OK
localhost:6379> get name
"along"
localhost:6379> set name yue nx
(nil)
localhost:6379> get name
"along"

XX:只有在key存在时才创建,会覆盖

localhost:6379> del name
(integer) 1
localhost:6379> set name along xx    # key不存在,创建失败
(nil)
localhost:6379> get name
(nil)
localhost:6379> set name along
OK
localhost:6379> get name
"along"
localhost:6379> set name yue xx    # key存在,覆盖
OK
localhost:6379> get name
"yue"

KEEPTTL:Redis6.x版本加入的新参数,官方给的解释是(Retain the time to live associated with the key)保留生存时间与密钥关联,以后讨论

del:删除一个或多个键
语法:del key [key ...]

localhost:6379> set name along
OK
localhost:6379> get name
"along"
localhost:6379> del name
(integer) 1
localhost:6379> get name
(nil)

四、Redis的五大基本数据类型

Redis的五大基本数据类型有:string(字符串)、hashes(哈希)、lists(链表)、sets(不重复集合)、sorted sets(有序集合)

1. String(字符串,单值单vlaue)

Redis中的基本类型,一个key对应一个String类型的value,value的长度最大不能超过512M
和java中的String类有很多方法,同样的Redis也为String提供了很多方法

append:对key的内容进行追加,如果key不存在就等同于set
语法:append key value

localhost:6379> set speak hello
OK
localhost:6379> get speak
"hello"
localhost:6379> append speak " world"
(integer) 11
localhost:6379> get speak
"hello world"

strlen: 获取长度
语法:strlen key

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空