文章目录
前言
redis版本7.0.5
reids安装案例
redis中文网命令参考
redis官方命令参考
redis在线测试
一、常用命令
1.服务启动和连接
1.1启动服务端
redis-server
1.2启动服务端
redis-cli
1.3客户端ping测试和服务端连接
返回PONG,连接正常
ping
1.4清屏
clear
1.5获取配置参数
config get port
2.数据库
2.1选择数据库
select 0
2.2当前数据库key数量
dbsize
2.3清空数据库
flushdb
3.key
3.1查看所有key
redis的key要保证唯一
keys *
3.2添加key值
set user zhangjg
ex到期时间,单位秒
不设置默认-1,永久有效
set user zhangjg ex 3
3.3获取key值
get user
3.4查询key是否存在
exists user
3.5获取key存储类型
type user
3.6删除key
del user
3.7设置key到期时间(单位:秒)
set user zhangjg
expire user 3
二合一
set user zhangjg ex 3
setex user 3 zhangjg
3.8查看key有效的秒数
-2代表key已过期
ttl user
3.9添加多个key值
mset a 1 b 2 c 3
3.10获取多个key值
mget a b c
3.11设置分布式锁
setnx user zhangjg
3.12删除分布式锁(释放锁)
del user
3.13设置分布式锁过期时间
set user zhangjg nx ex 10
3.14批量删除
在服务器上执行,pass是密码,1选择数据库,keys*匹配要删除的key
redis-cli -a pass -n 1 keys "keys*"|xargs redis-cli -a pass -n 1 del
4.Transactions(事务)
4.1开启事务
multi后续执行的命令会放到QUEUED中,直到遇到exec或者discard事务才会结束
multi
4.2执行事务
执行QUEUED中的命令
exec
4.3丢弃事务
QUEUED中的命令将不会执行,事务结束
discard
4.4监听key(乐观锁)
左客户端获取到锁先执行成功,右客户端获取锁时发现值已经改变,执行失败。
watch user
4.5解除监听key
watch和unwatch要在事务开启之前执行
unwatch
5.acl
6.0之后的版本可以使用
5.1查看用户列表
#全部用户
acl users
#更多信息
acl list
包含用户启用、是否需要密码、权限类型
5.2添加用户
acl setuser zhangjg
带密码,带权限
#生成密码
acl genpass
#添加用户(~*:可以获取所有的key;&*:可以访问所有的通道;+@all:可以执行所有命令)
acl setuser zhangjg on >21797d7480c1270b848a1524128671b31dcad0725762cf41cc81c21e15fa35b2 ~* &* +@all
5.3查看用户
acl getuser zhangjg
5.4切换用户
auth zhangjg 21797d7480c1270b848a1524128671b31dcad0725762cf41cc81c21e15fa35b2
5.5删除用户
acl deluser zhangjg
5.6查看当前用户
acl whoami
二、常用数据类型
1.string(字符串)
1.1添加值
set user zhangjg
key存在时,不再添加
setnx user zhangjunguo
1.2获取值
get user
设置新值,返回结果为之前的旧值
set age 20
getset age 21
get age
1.3获取值长度
strlen user
1.4自增(incr)
默认自增1
set age 0
incr age
get age
自定义自增值
incrby age 2
1.5自减(decr)
默认自减1
decr age
get age
自定义自减值
decrby age 2
1.6追加值(append)
append a 0
1.7截取字符串
类似于substr,包含尾部
substr user 0 4
getrange user 0 4
1.7替换字符串
类似于replace,从下标开始处替换
set a 101010
setrange a 2 **
get a
注意:当字符串长度小于下标值的时候,该命令会进行补0的操作
set a 101010
setrange a 10 **
get a
2.list(列表)
2.1入队
lpush l1 a1 b1 c1
rpush r1 a1 b1 c1
2.2获取指定范围元素
-1代表列表的最后一个元素
lrange l1 0 -1
lrange r1 0 -1
2.3获取列表元素数量
llen l1
2.4出队
出队的元素在列表中就移除了,不加数量默认取出一个
lpop l1
rpop r1
根据count取出多个值
lpop l1 3
rpop r1 3
2.5索引
通过索引获取元素
lindex l1 0
通过索引替换当前元素值
lset l1 0 d11
2.6删除元素
0的位置代表要删除的数量,0表示删除所有值匹配的元素
lrem l1 0 d11
2.7插入元素
在元素之前或之后插入元素
lpush l1 a1 b1
linsert l1 before b1 b1before
linsert l1 after b1 b1after
lrange l1 0 -1
3.set(集合)
3.1插入元素
sadd s1 sss ssr
3.2获取元素(全部)
smembers s1
3.3获取元素数量
scard s1
3.4值是否存在集合中
1:存在,0:不存在
sismember s1 sss
3.5元素删除
1:成功,0:失败
srem s1 sss
3.6差集
a1有的,a2没有
sadd s1 a1 b1 c1
sadd s2 c1
sdiff s1 s2
将差集结果存到目标集合中
sdiffstore s1diffs2 s1 s2
smembers s1diffs2
3.7交集
a1有的,a2也有的
sinter s1 s2
将交集结果存到目标集合中
sinterstore s1sinters2 s1 s2
smembers s1sinters2
3.8并集
a1有的和a2有的加一块
sadd s2 d1
sunion s1 s2
将交集结果存到目标集合中
sunionstore s1sunions2 s1 s2
smembers s1sunions2
3.9删除并获取元素
sadd s1 a1 b1 c1
spop s1
取出给定数量的元素
spop s1 3
4.hash(哈希)
特别适合存储对象
4.1添加元素
设置单个属性
hset user:1000 name "root"
设置多个属性
hmset user:1001 id "1001" name "zhangjg" email "zhangjg@qq.com"
当field不存在时,新增键值对
hsetnx user:1001 id 1002
4.2获取元素
4.2.1获取单个属性
hget user:1000 name
4.2.2获取多个属性
hmget user:1001 id name email
4.2.3获取所有field
hkeys user:1001
4.2.4获取所有value
hvals user:1001
4.2.5获取整个对象的全部键值对
hgetall user:1001
4.3判断field是否已经存在
1:存在,0:不存在
hexists user:1001 id
4.4获取field数量
hlen user:1001
4.5获取value长度
hstrlen user:1001 name
4.6自增或自减
hincrby user:1001 id 2
hincrby user:1001 id -2
4.7遍历所有键值对
hscan user:1001 0
4.8删除field
hdel user:1001 address
5.Sorted Sets(有序集合)
5.1添加元素
zadd lan 1 c
添加多个元素
zadd lan 1 c 5 c++ 20 c# 30 java 55 php 80 python
5.2获取元素(withscores分数)
根据元素,获取分数
zscore lan python
从小到大,从大到小(查看所有元素和分数信息)
zrange lan 0 -1 withscores
zrevrange lan 0 -1 withscores
取出最小值,取出多次最小值
zpopmin lan
zpopmin lan 3
取出最大值,取出多次最大值
zpopmax lan
zpopmax lan 3
5.3删除元素
删除单个元素,删除多个元素
zrem lan c++
zrem lan c++ php
根据分数删除范围内元素(含头,含尾),根据索引删除范围内元素(含头,含尾)
zremrangebyscore lan 3 20
zremrangebyrank lan 0 1
5.4获取元素数量
zcard lan
5.5获取分数范围内元素个数
zcount lan 1 20
5.6分数自增和自减
zincrby lan 2 c
zincrby lan -2 c
5.7元素在集合中的索引
zrank lan c++
5.8字典顺序排序(分数相同)
正序:以ASCII字符集的顺序进行排列(a-z,A-Z)
-最小值,+最大值
zadd zset 0 a 0 b 0 abc 0 e 0 d 0 z
zrangebylex zset - +
根据[min [max元素获取范围数据(含头,含尾)
zrangebylex zset [a [b
根据[min (max元素获取范围数据(含头,不含尾)
zrangebylex zset [a (b
limit:分页(起始位置,元素数量)
zrangebylex zset - + limit 2 2
5.9字典顺序排序(分数相同)
倒序:以ASCII字符集的顺序进行排列(z-a,Z-A)
-最小值,+最大值
zadd zset 0 a 0 b 0 abc 0 e 0 d 0 z
zrevrangebylex zset + -
根据[max [min元素获取范围数据(含头,含尾)
zrevrangebylex zset [b [a
根据[max (min元素获取范围数据(不含头,含尾)
zrevrangebylex zset (b [a
limit:分页(起始位置,元素数量)
zrevrangebylex zset + - limit 2 2
5.10字典顺序删除元素(分数相同)
删除z开头的元素
zremrangebylex zset [z +
删除a-d中间的元素(含头,包含尾d,不包含dd这样的元素排序在d之后,所以d后面有内容的元素是不在删除范围之内的)
zremrangebylex zset [a [d
总结
redis命令参考里面描述的很详细。
redis中文网翻译过来和官方如出一辙,向前辈致敬。