Redis安装
win安装
-
安装方式: 全部使用默认配置,直接点击下一步next
linux安装
下载安装包并解压和编译
wget http://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-6.0.8.tar.gz
mv redis-6.0.8 redis
cd redis
make
配置 redis 为后台启动
vim redis.conf
daemonize yes
设置连接密码
vim redis.conf
requirepass password
设置远程连接
vim redis.conf
# bind 127.0.0.1
protected-mode no
后台启动redis
cd src
./redis.server ../redis.conf
yum安装
安装redis
yum -y install redis
设置连接密码
vim /etc/redis.conf
requirepass password
设置远程连接
vim /etc/redis.conf
# bind 127.0.0.1
protected-mode no
开机自启和启动
systemctl enable redis --now
Redis连接
可视化工具
无需认证
–raw是防止乱码
redis-cli --raw -h 127.0.0.1 -p 6379
需要认证
- 连接时候直接认证
redis-cli -h 127.0.0.1 -p 6379 -a password
- 连接后再进行认证
redis-cli -h 127.0.0.1 -p 6379
auth password
Redis配置
备份及恢复
-
执行完save命令后会在redis安装目录生成一个dump.rdb文件
-
需要恢复数据的话只需要把dump.rdb放到redis安装路径之后重启redis即可
-
config get dir命令返回字符串redis安装路径
save
config get dir
更换数据库
select index
清空数据库
-
dbsize命令返回数字当前数据库key个数
-
flushdb清空当前选中数据库
-
flushall清空所有数据库
dbsize
flushdb
flushall
设置密码
config set requirepass password
取消密码
config set requirepass ''
Redis 键(keys)
del (删除数据)
del key1 key2 key3 ... #返回数字成功删除的数量
rename (重命名key)
-
成功返回字符串OK
-
key1不存在返回错误
-
key2已存在则会覆盖
rename key1 key2
renamenx (重命名key)
-
返回数字0或1
-
newkey存在则返回0,不存在则返回1
renamenx key1 newkey
move (移动key)
move key1 10 #移动key1到10数据库,返回数字0或1
keys (筛选查找key)
keys a* #查找所有以aa开头的key
keys *b* #查找所有包含aa的key
keys a?? #查找长度为4,前两位为aa的key
randomkey (随机取key)
randomkey #返回字符串随机的一个key,如果没有key则返回null
exists (判断是否存在)
exists key1 key2 key3 key4 ... #返回数字存在的数量
type (获取数据类型)
type key1 #返回值有none、string、hash、list、set、zset
expire (设置到期时间)
expire key1 10 #返回数字0或1,时间单位为秒
pexpire (设置到期时间)
expire key1 1000 #返回数字0或1,时间单位为毫秒
expireat (设置到期时间)
expireat key1 1679295501 #返回数字0或1,时间单位为10位时间戳
pexpireat (设置到期时间)
pexpireat key1 1679295501000 #返回数字0或1,时间单位为13位时间戳
persist (移除到期时间)
persist key1 #返回数字0或1
ttl (查询到期时间)
-
返回数字-1 没有设置到期时间
-
返回数字-2 key不存在
-
否则返回还剩多少秒到期
ttl key1
pttl (查询到期时间)
-
返回数字-1 没有设置到期时间
-
返回数字-2 key不存在
-
否则返回还剩多少毫秒到期
pttl key1
Redis 字符串(String)
set (存储数据)
set key1 value1 #返回字符串OK
setnx (不存在时存储)
setnx key1 value1 #key1不存在时候存储数据,存在则不进行操作,返回数字0或1
mset (批量存储数据)
mset key1 value1 key2 value2 key3 value3 #批量存储数据,返回字符串OK
msetnx (批量不存在时存储)
msetnx key1 value1 key2 value2 key3 value3 #返回数字0或1,所有key都不应该存在
getset (设置值并返回原值)
getset key1 value2 #返回字符串key1原来的值,key1不存在则返回null
setex (存储并设置到期)
setex key1 10 value1 #设置key1的值为value1,10秒后到期,返回字符串OK
psetex (存储并设置到期)
psetex key1 1000 value1 #设置key1的值为value1,1秒后到期,返回字符串OK
append (追加字符串)
append key1 test #返回数字当前字符串长度
incr (自动数值+1)
-
value必须为数字
-
key不存在会自动创建并设置value为1
incr key1 #返回数字修改后的值
decr (自动数值-1)
-
value必须为数字
-
key不存在会自动创建并设置value为-1
decr key1 #返回数字修改后的值
incrby (指定数值增加)
incrby key1 10 #返回数字修改后的值
decrby (指定数值减少)
decrby key1 10 #返回数字修改后的值
incrbyfloat (增加小数)
incrbyfloat key1 10.50 #返回数字修改后的值
get (获取数据)
get key1 #返回字符串,不存在返回null
mget (批量获取数据)
mget key1 key2 key3 #返回数组字符串
getrange (字符串截取)
-
end值-1代表截取到倒数第一位,-2代表截取到倒数第二位
-
key不存在或截取范围不存在返回空白字符串,不会返回null
getrange key1 0 3 #返回字符串
Redis 哈希(Hashes)
hset (存储数据)
hset key1 field1 value1 field2 value2 #返回数字key1的field数量
hsetnx (不存在时存储)
hsetnx key1 field1 value1 #返回数字0或1
hincrby (为filed添加数)
hincrby key1 field1 10 #返回数字field当前值
hincrbyfloat key1 field1 10.5 #返回数字field当前值
hget (获取数据)
hget key1 field1 #返回字符串,不存在返回null
hmget (批量获取数据)
hmget key1 field1 field2 #返回数组字符串
hkeys (获取field)
hkeys key1 #返回数组字符串
hvals (获取value)
hvals key1 #返回数组字符串
hgetall (取field和value)
hgetall key1 #返回数组字符串,一行field,一行value
hlen (获取field数量)
hlen key1 #返回数字key1的field数量
Redis 列表(Lists)
lpush (存储数据)
lpush key1 value1 value2 #返回数字当前list长度,从左边添加
lpushx (存在时候存储)
lpushx key1 value1 value2 #返回数字当前list长度
rpush(存储数据)
rpush key1 value1 value2 #返回数字当前list长度,从右边添加
rpushx (存在时候存储)
rpushx key1 value1 value2 #返回数字当前list长度
linsert (指定位置添加)
linsert key1 before/after value1 value2 #返回当前数组长度,只会查找第一个value1
lpop (移除并返回第一个)
lpop key1 #返回字符串,没有则返回null
blpop key1 key2 ... 10 #返回数组字符串,一行key一行value,0永久阻塞,单位秒
rpop (移除并返回最后一个)
rpop key1 #返回字符串,没有则返回null
lrem (删除成员)
-
0 删除所有
-
1 删除第一个
-
2 删除第二个
-
-1 删除最后一个
-
-2 删除最后两个
lrem key1 0 value1 #返回数字删除的数量
lset (根据索引修改)
-
0 第一个
-
1 第二个
-
-1 倒数第一个
-
-2 倒数第二个
lset key1 -2 value1 #返回字符串OK
ltrim (修剪数组)
ltrim key1 1 -1 #返回字符串OK
lrange (获取数据)
lrange key1 0 -1 #返回数组字符串
lindex (通过索引获取)
lindex key1 -2 #返回字符串,不存在则返回null
Redis 集合(Sets)
sadd (存储数据)
sadd key1 memeber1 memeber2 #返回数字当前set长度
srem (删除成员)
srem key1 memeber1 memeber2 #返回数字0或1
spop (随机删除并返回)
-
省略count参数时候,返回字符串,不存在或没数据返回null
-
输入count参数时候,返回数组字符串,不存在或没数据返回空白数组
spop key1 [count] #随机删除并返回数据
smove (移动数据)
smove key1 key2 memeber1 #返回数字0或1
smembers (获取数据)
smembers key1 #返回数组字符串
srandmember (随机获取)
sranmember key1 [count] #返回字符串或数组字符串
sismembers (判断是否存在)
sismember key1 memeber1 #返回数字0或1
sdiff (获取差集)
sdiff key1 key2 key3 #返回数组字符串,第一个集合和其他集合的差集
sdiffstore (把差集存储起来)
sdiffstore newkey key1 key2 key3 #返回数字newkey的长度
sinter (获取交集)
sinter key1 key2 key3 #返回数组字符串,key1 key2 key3的交集
sinterstore (把交集存储起来)
sinterstore newkey key1 key2 key3 #返回数字newkey的长度
sunion (获取并集)
sunion key1 key2 key3 #返回数组字符串,key1 key2 key3的并集
sunionstore (把并集存储起来)
sunionstore newkey key1 key2 key3 #返回数字newkey的长度
Redis 有序集合(Sorted Sets)
zadd (存储数据)
zadd key1 10 member1 20 member2 30 member3 #返回数字添加成功的数
zrem (通过member删除)
zrem key1 value1 #返回数字删除的数量
zremrangebyrank (通过索引删除)
zremrangebyrank key1 0 1 #返回删除的数量,从底到高删除
zremrangebyscore (通过成绩删除)
- ( 符号代表不包含 (1 10意思就是 1 < score ≤10
zremrangebyscore key1 (1 10 #返回数字删除的数量
zincrby (分数修改)
zincreby key1 10 member1 #返回数组member1的分数
zrange (取所有member)
zrange key1 0 -1 #返回数组字符串,根据成绩从小到大排序
zrevrange key1 0 -1 #返回数组字符串,根据成绩从大到小排序
zrangebyscore (筛选成绩取member)
zrangebyscore key1 (1 10 #返回数组字符串,根据成绩从小到大排序
zrevrangebyscore key1 (10 1 #返回数组字符串,根据成绩从大到小排序
zscore (取成员score)
zscore key1 member1 #返回数字value1的成绩
zrank (获取member排名)
zrank key1 member1 #返回数字member1从小到大的排名
zrerank key1 member1 #返回数字member1从大到小的排名
zcard (取member数量)
zcard key1 #返回数字key1的成员数
zcount (成绩筛选个数)
zcount key1 (10 30 #返回数字,成绩10<score≤30的数量
Redis 事务
multi (开启事务)
exec (执行命令)
执行过程中如果有某一行命令执行错误,不会耽误其他命令执行
multi
set age 18
set name wang
exec
discard (取消事务)
multi
set age 18
set name wang
discard
watch (监听数据)
-
可以同时监听多个
-
unwatch (取消监听)
set age 18
watch age
multi
set age 20
exec
Redis Stream(队列)
xadd (添加消息到末尾)
XADD key ID field value [field value ...]
#返回字符串为消息ID
#消息ID必须是数字且必须是唯一的
#消息ID可以自己生成也可以使用*号来代替,而且要比上一次添加的大
xdel (删除消息)
xdell key1 消息id #返回数字0或1
xtrim (修剪消息)
xtrim key1 maxleng 2 #返回数字删除了的数量,留下最新的消息
xrange (获取消息)
-
减号表示最小值,或者输入数字
-
加号表示最大值,或者输入数字
xrange key1 - + #返回数组字符串,从最开始到最新
xrevrange key1 - + #返回数组字符串,从最新到最开始
xlen (获取消息长度)
xlen key1 #返回数字消息数量
xread (读取消息)
xread [count] [block] streams key [key ...] id [id ...]
一个流和多个客户端,并且你希望所有的客户端都获取到完整的信息
-
count 参数不设置就是读取所有,设置就是读取具体的数量
-
block 参数设置0就是永久等待,单位毫秒
-
注意: 有几个key就要有几个id,格式: key key id id
-
id 参数可以设置为$、0、0-0、具体数字
-
$符号和block参数一起用,用来获取最新的消息
-
0和0-0意思相同,消息id格式为时间戳-序号,所以0-0就是从0时间0序号开始
xgroup create (创建消费者组)
xgroup create key1 groupname 0|0-0|$ #返回字符串OK,不可重复,$符号代表读取最新
xgroup destroy (删除消费者组)
xgroup destroy key1 groupname #返回数字0或1删除的数量,删除之后消息需要重新ack
xgroup delconsumer (删除消费者)
xgroup delconsumer key1 grouname consumer #返回数字0或1删除的数量
xgroup setid (修改递送消息id)
xgroup setid key1 groupname 0|0-0|$ #返回字符串OK,常用来获取已获取但未ack的消息
xack (消费者确认消息)
xack key1 groupname id #返回数字0或1成功确认的数量
xreadgroup (消费者读取消息)
一个流和多个客户端,并且你希望在你的客户端上对流进行分区或共享,以便每个客户端都能获得一个到达流的消息的子集
-
noack参数代表消息已读取并设置已经确认
-
id值可为 >|0|0-0|具体id ,>符号代表获取最新的消息
xreadgroup group groupname consumer [count] [block] [noack] streams key [key ...] ID [ID ...]
xpending (获取待处理消息)
xpending key1 groupname [start end count] [consumer]
xinfo stream (获取流信息)
xinfo stream key1 #返回数组字符串
xinfo groups (获取消费组)
xinfo groups key1 #返回数组字符串
xinfo consumers (获取消费者)
xinfo consumers key1 grouname #返回数组字符串
1449




被折叠的 条评论
为什么被折叠?



