redis常用linux指令(无介绍快使用)

问题背景

  • 有时候需要在linux直接操作redis,可老是忘记指令,写一篇快使用redis指令

登录关闭redis

1 登录redis客户端

redis-cli -h 127.0.0.1 -p 6379 -a password 

2 关闭redis客户端

redis-cli shutdown

创建键值对

1 创建键为:k1,值为:hello

set k1 hello

2 获取键:k1的值

get k1

切换16个数据库

1 数据库索引为0-15,切换第16个数据库

select 15

数据库键的数量

dbsize

清空数据库

1 清空当前库

flushdb

2 清空16个库

flushall

模糊查询

1 查询所有的键

keys *

2 查询 k* 开头的所有键

keys k*

3 查询 *e 结尾的所有键

keys *e

4 查询包含 k 的键

keys *k*

通配符单个字符?

1 模糊查询k字头,并且匹配一个字符

keys k?

2 匹配两个未知字符

keys k??

通配括号内的某一个字符

1 记得其他字母,就第二个字母可能是a或e

keys r[ae]dis

判断key是否存在

1 判断键k1是否存在

exists k1

移动key到不同数据库

1 移动到第9个数据库

move k1 8

ttl key:查看键还有多久过期(-1永不过期,-2已过期)

1 查看k1多久过期,time to live 还能活多久

ttl k1

设置过期时间

1 设置k1过期时间为10s

expire k1 10

查看键的类型

1 type key

type k1

字符串类型

1 创建键

set k1 v1

2 获取值

get k1

3 追加字符串值abc

append k1 abc

4 查看value的长度

strlen k1

5 删除键

del k1

数字类型加减

1 创建键

set k1 1

2 自增+1

incr k1

3 自减-1

decr k1

4 自增任意数,自增+3

incrby k1 3

5 自减任意数,自减-3

decr k1 3

range使用

1 查看String类型中索引包含的值,类似substring,查看所有

getrange k1 0 -1

2 查看0到3共4个字符

getrange k1 0 3

3 替换k1的值,从下标1开始提供为xxx

setrange k1 1 xxx

setex设置数据的生命周期set with expire

1 添加k1 v1数据的同时,设置5秒的声明周期

setex k1 5 v1

setnx分布式锁set if not exist

1 添加数据的时候判断是否已经存在,防止已存在的数据被覆盖掉,如果k1存在返回0,不存在返回1

setnx k1 v1

批量设置和查询

1 mset

mset k1 v1 k2 v2

2 msetnx

msetnx k1 v1 k2 v2

getset先获取,null进行创建,否则修改value

getset k1 v1

列表list

1 lpush,l:left 自左向右→添加 (从上往下添加),先添加1,再添加2,最后5

lpush list01 1 2 3 4 5

2 因为先添加的1,最后添加的5,所以从左边开始取,是先取5

lrange list01 0 -1
"5"
"4"
"3"
"2"
"1"

3 rpush,r:right 自右向左←添加(从下往上添加),先添加5,再添加4,最后添加1

rpush list02 1 2 3 4 5 

4 lpop移除左边第一个元素,也就是1

lpop list02

4 rpop移除右边第一个元素,也就是5

rpop list02

5 lindex从左边开始查询索引

lindex list01 2

6 llen:返回集合长度

llen list01

7 lrem:删除n个value,从list01中移除1个3

lrem list01 1 3

8 ltrim:截取指定范围的值,别的全扔掉,与substring一样,只不过集合被清除了

ltrim list01 1 3

9 lset:改变某个下标的某个值,将list02中下标为0的元素修改成x

lset list02 0 x

10 linsert:插入元素(指定某个元素之前/之后)
从左边进入,在list02中的2元素之前插入java

linsert list02 before 2 java 

从左边进入,在list02中的2元素之后插入redis

linsert list02 after 2 redis 

集合set,不允许重复

1 sadd:添加到集合

sadd set01 1 2 2 3 3 3

2 smembers:查看集合

smembers set01

3 sismember:判断是否存在

sismember set01 5

返回0和1,表示布尔false不存在和true存在,不是下标
4 scard:获得集合中的元素个数

scard set01

5 srem:删除集合中的元素 srem key value

srem set01 2

6 srandmember:从集合中随机获取几个元素 srandmember 整数(个数)

  • 从set01中随机获取3个元素
srandmember set01 3 

7 spop:随机出栈(移除)

  • 随机移除一个元素
spop set01

8 smove:移动元素:将key1某个值赋值给key2

  • 将set01中的元素3移动到set02中
smove set01 set02 3

9 交集:sinter

  • set01和set02共同存在的元素
sinter set01 set02

10 并集:sunion

  • 将set01和set02中所有元素合并起来(排除重复的)
sunion set01 set02

11 差集:sdiff

  • 在set01中存在,在set02中不存在
sdiff set01 set02

哈希Hash,KV模式不变,但V是一个键值对

1 hset:添加

  • 添加user,值为id=1001
hset user id 1001

2 hget:得到

  • 查询user,必须指明具体的字段
hget user id

3 hmset:多添加

  • 添加学生student,属性一堆
hmset student id 101 name tom age 22

4 hmget:多得到

  • 获取学生名字和年龄
hmget student name age

5 hgetall:得到全部

  • 获取学生全部信息
hgetall student

6 hdel:删除属性

  • 删除学生年龄属性
hdel student age

7 hlen:返回元素的属性个数

  • student属性的数量,id和name,共两个属性
hlen student

8 hexists:判断元素是否存在某个属性

  • student中是否存在name属性
hexists student name

9 hkeys:获得属性的所有key

  • 获取student所有的属性名
hkeys student

10 hvals:获得属性的所有value

  • 获取student所有属性的值(内容)
hvals student

11 hincrby:自增(整数)

  • 自增整数2
hincrby student age 2

12 hincrbyfloat:自增(小数)

  • 自增小数5.5
hincrbyfloat user money 5.5

13 hsetnx:添加的时候,先判断是否存在

  • 添加时,判断age是否存在
hsetnx student age 18

有序集合Zset

1 zadd/zrange (withscores):添加/查询

127.0.0.1:6379> zadd zset01 10 vip1 20 vip2 30 vip3 40 vip4 50 vip5
(integer) 5
127.0.0.1:6379> zrange zset01 0 -1 # 查询数据
1) "vip1"
2) "vip2"
3) "vip3"
4) "vip4"
5) "vip5"
127.0.0.1:6379> zrange zset01 0 -1 withscores # 带着分数查询数据
1) "vip1"
2) "10"
3) "vip2"
4) "20"
5) "vip3"
6) "30"
7) "vip4"
8) "40"
9) "vip5"
10) "50"

2 zrangebyscore:模糊查询

  • ( : 不包含
  • limit:跳过几个截取几个
127.0.0.1:6379> zrangebyscore zset01 20 40 # 20 <= score <= 40
1) "vip2"
2) "vip3"
3) "vip4"
127.0.0.1:6379> zrangebyscore zset01 20 (40 # 20 <= score < 40
1) "vip2"
2) "vip3"
127.0.0.1:6379> zrangebyscore zset01 (20 (40 # 20 < score < 40
1) "vip3"
127.0.0.1:6379> zrangebyscore zset01 10 40 limit 2 2 # 10 <= score <=
40,共返回四个,跳过前2个,取2个
1) "vip3"
2) "vip4"
127.0.0.1:6379> zrangebyscore zset01 10 40 limit 2 1 # 20 <= score <=
40,共返回四个,跳过前2个,取1个
1) "vip3"

3 zrem:删除元素

zrem zset01 vip5

4 zcard/zcount/zrank/zscore:集合长度/范围内元素个数/得元素下标/通过值得分数

127.0.0.1:6379> zcard zset01 # 集合中元素的个数
(integer) 4
127.0.0.1:6379> zcount zset01 20 30 # 分数在20~40之间,共有几个元素
(integer) 2
127.0.0.1:6379> zrank zset01 vip3 # vip3在集合中的下标(从上向下)
(integer) 2
127.0.0.1:6379> zscore zset01 vip2 # 通过元素获得对应的分数
"20"

5 zrevrank:逆序找下标(从下向上)

zrevrank zset01 vip3

6 zrevrange:逆序查询

127.0.0.1:6379> zrange zset01 0 -1 # 顺序查询
1) "vip1"
2) "vip2"
3) "vip3"
4) "vip4"
127.0.0.1:6379> zrevrange zset01 0 -1 # 逆序查询
1) "vip4"
2) "vip3"
3) "vip2"
4) "vip1"

7 zrevrangebyscore:逆序范围查找

127.0.0.1:6379> zrevrangebyscore zset01 30 20 # 逆序查询分数在30~20之间的
(注意,先写大值,再写小值)
1) "vip3"
2) "vip2"
127.0.0.1:6379> zrevrangebyscore zset01 20 30 # 如果小值在前,则结果为null
(empty list or set)




作为程序员第 118 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 你的发香散的匆忙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值