Redis 命令大全

官方地址:https://redis.io/commands

一、服务器相关命令

1、启动 Redis(需要配置环境变量,否则要切换到安装目录下的 bin 目录执行)

(1)方法一、前台启动

redis-server  

(2)方法二、后台启动(需要修改 redis.conf 里的 daemonize 的值为 yes

redis-server redis.conf

 

2、查看是否启动

(1)方法一、ping 一下,返回 pong 则启动成功

redis-cli ping

 

(2)方法二、查看端口

ps -ef | grep -i redis

 

3、启动客户端

redis-cli  (中文会乱码)

redis-cli --raw (中文不乱吗)

 

4、停止 Redis

redis-cli shutdown

 

这一部分详解可以参考:Redis 安装教程

二、keys键操作

0、选择指定数据库

select 1  选择 1 号数据库

 

1、【keys】 返回所有满足给定 pattern 的 key

keys *     返回所有的 key

keys my*  返回 my 开头的 key

 

2、【exists】确认一个 key 是否存在(存在返回 1,不存在返回 0)

exists name 

 

3、【type】返回一个 key 的类型

type name

 

4、【dbsize】返回当前数据库中的 key 数量

dbsize  删除一个键值对

 

5、【del】删除指定的 key

del name  删除一个键值对

del name age 删除两个键值对

 

6、【rename】修改一个 key 的名称

rename name username   将 key 为 name 改成 username

 

7、【expire】设置一个 key 的过期时间(秒)

expire name 100    name 这个 key 将在 100 秒后被删除

 

8、【ttl】返回某个 key 的过期时间(秒),key 不会过期返回 -1,key 不存在返回 -2

ttl name   查看name还有多久过期

 

9、【move】将 key 移到指定数据库

move age 1  将 age 从当前数据库移到 1

 

10、【flushdb】删除当前数据库里的所有 key 慎重

flushdb

 

11、【flushall】删除所有数据库里的 key 慎重

flushall

 

三、字符串(String) 类型操作

 

1、【set】  添加键值对

set name 言曌

set age 18

 

2、【get】根据 key 获得 value

get name

get age

 

3、【mset】评论添加键值对

mset name 罗琪 age 18 sex 女 

 

4、【mget】批量获取值

mget name age sex

 

5、【incr】对 key 的值 +1,返回加后的值

incr age  对 age 的值 +1

 

6、【incrby】对 key 的值加指定的数量,返回加后的值

incrby age 10   对 age 的值 +10

 

7、【decr】对 key 的值 -1,返回减后的值

decr age

 

8、【decrby】对 key 的值减指定的数量,返回减后的值

decrby age 10   对 age 的值 -10

 

9、【append】对 key 的值后面追加字符,返回追加后的长度

append name 爱你  在 name 的值后面加上爱你

 

四、哈希(Hash)类型操作

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

 

1、【hset】向哈希表中添加一个字段

hset myhash name 言曌

hset myhash age 18

hset myhash sex 男

添加一个 key 为 myhash 的哈希表,里面有三个字段,分别是 name,age,sex 对应的值如上

 

2、【hmset】 向哈希表中批量添加字段

hmset myhash name 琪琪 age 18 sex 女

 

3、【hget】获取一个哈希表中的指定字段的值

hget myhash name  获得哈希表 myhash 中 name 的值

 

4、【hmget】获得一个哈希表中多个字段的值

hmget myhash name age sex

 

5、【hgetall】获得一个哈希表的所有字段和值

hgetall myhash

 

5、【hdel】删除一个哈希表里的字段

hdel myhash name   删除 myhash 里的一个字段

hdel myhash age sex  删除多个字段

 

 

6、【del】删除整个哈希表

del myhash

 

7、【hincrby】给一个哈希表中指定的字段加指定的数值

hincrby myhash age 10    给 myhash 集合中的 age + 10

 

8、【hexists】查看一个哈希表中某个字段是否存在

hexists myhash name

 

9、【hlen】返回一个哈希表中字段数量

hkeys myhash

 

10、【hkeys】返回一个哈希表中所有的 key

hkeys myhash

 

11、【hvals】返回一个哈希表中所有的 value

hvals myhash

 

 

五、List 类型操作

List 是一个有序的集合,一般常用的有以下两种实现

一个是 ArrayList,基于数组的,随机访问和查找快;

一个是 LinkedList,基于链表的,插入和删除较快。

 

1、【lpush】往左侧添加元素(列表不存在会自动创建)

lpush mylist a b c d 

先创建(如果存在,不创建)一个 mylist,然后在从右往左侧依次添加 a,b,c,d 三个元素

最终得到使用 lrange 命令查看 mylist 为 d c b a

 

2、【rpush】往右侧添加元素(列表不存在会自动创建)

rpush mylish2 a b c d

先创建(如果存在,不创建)一个 mylist2,然后在左往右依次添加 a,b,c,d 三个元素

最终得到使用 lrange 命令查看 mylish2 为 a b c d

 

3、【lpushx】向已存在的列表从左侧添加元素(列表不存在返回0)

lpushx mylist e f g

 

4、【rpushx】向已存在的列表从右侧添加元素(列表不存在返回0)

rpushx mylist e f g

 

5、【lrange】查看列表元素

lrange mylist 0 3  

lrange mylist 0 -1

0 和 3 表示起始范围,负数表示倒数第几个

如果 mylist 只有 4 个元素,上面两句都是表示查看 mylist 列表中所有元素

 

6、【lpop】弹出首部元素

lpop mylist 

删除最左边的元素,并返回该元素

 

7、【rpop】弹出尾部元素

rpop mylist 

删除最右边的元素

 

8、【llen】返回列表的长度

llen mylist

 

9、【lrem】删除列表中的指定元素

格式: lrem key count value (注意 count 的值)

lrem mylist 2 a   删除 mylist 中的两个 a(从左边往右边找)

lrem mylist 2 a   删除 mylist 中的两个 a  (从右边往左边找)

lrem mylist 0 a   删除 mylist 里的所有 a

 

10、【lset】设置指定坐标的值(替换已存在的元素,但下标不能越界)

lset mylist 3 mm    设置下标为3的元素为 mm

 

11、【linsert】在某个元素前或后插入一个元素

linsert mylist before b aaaaa     在 第一个 b 元素前插入一个 aaaaa 元素

linsert mylist after b ccccc        在 第一个 b 元素后插入一个 ccccc 元素

 

12、【lpoprpush】弹出一个列表尾部元素,加到里另一个列表首部

格式:lpoprpush source target

rpush list a b c d

rpush list2 1 2 3 4

lpoprpush list list2

返回 d

最终:list 的元素为:a b c

list2 的元素为:d 1 2 3 4

 

该命令应用场景很多,比如消息管理

 

六、Set 类型操作

Set 和 List 最大区别是,Set 不会出现重复的元素

1、【sadd】向集合(不存在会创建)中添加元素

sadd myset a b c d

 

2、【srem】删除集合中的元素

srem myset a   删除一个元素

srem myset b c   删除多个元素

 

3、【smembers】查看集合中的元素

smembers  myset

 

4、【sismember】查看某元素是否在集合中(存在返回1,不存在返回0)

sismember myset a

 

5、【sdiff】差运算,返回差集(前面的-后面的)

sadd set a b c d

sadd set2 c d e f

sdiff set set2

set 集合减去 set2 集合,返回 a b

 

6、【sinter】交运算,返回集合都有的元素

sadd set a b c d

sadd set2 c d e f

sinter set set2

返回 set 和 set2 集合都有的元素,即 c d

 

7、【sunion】并运算,返回两个集合所有的元素

sadd set a b c d

sadd set2 c d e f

sinter set set2

返回 set 和 set2 集合所有的元素,即 a f e d b c

 

8、【scard】返回 set 的长度

scard myset

 

9、【srandmember】返回集合中随机一个元素

srandmember myset

 

10、【sdiffstore】将两个集合的差集放到一个新的集合里

sadd set a b c d

sadd set2 c d e f

sdiffstore newset set set2   

最终 newset 结果为 a b

 

11、【sinterstore】将两个集合的交集放到一个新的集合里

sadd set a b c d

sadd set2 c d e f

sinterstore newset set set2   

最终 newset 结果为 c d

 

12、【sunionstore】将两个集合的交集放到一个新的集合里

sadd set a b c d

sadd set2 c d e f

sunionstore newset set set2   

最终 newset 结果为 c d

 

七、sorted-set 类型操作

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

1、【zadd】添加一个元素

格式:zdd score value  其中 score 表示权值

zadd mysort 78 李明 

zadd mysort 90 言曌

zadd mysort 98 罗琪

 

2、【zscore】查询指定元素的分数

zscore mysort 言曌

 

3、【zrem】删除指定元素

zrem mysort 李明

 

4、【zcard】查询集合的元素个数

zcard mysort

 

5、【zrange】范围查找,排序由小到大

zrange mysort 0 -1 查询所有的元素值

zrange mysort 0 -1 withscores查询所有的元素值和对应的分数

 

6、【zrevrange】范围查找,排序有大到小

zrevrange mysort 0 -1 查询所有的元素值

zrevrange mysort 0 -1 withscores查询所有的元素值和对应的分数

 

7、【zremrangebyrank】按照排名删除

zremrangebyrank mysort 0 2  删除排名前三的(从小到大的顺序)

 

8、【zremrangebyscore】按照分数范围删除

zremrangebyscore mysort 80 100    删除 0-60 分的元素

 

9、【zrangebyscore】查询分数范围内的元素

zrangebyscore mysort 0 60  查询分数在 0-60 分的元素

zrangebyscore mysort 0 60 limit 0 2  查询分数在 0-60 分的元素,返回 前 2 个

 

10、【zincrby】给指定的元素的分数增加分数

格式:zincrby key increment member

zincrby mysort 5 言曌      给言曌加5分

 

11、【zcount】返回指定分数范围内的元素个数

zcount mysourt 10 100   返回 10-100 分内的元素个数

 

 

 

上述例子都经过试验,应该没有什么问题

 

本文地址: https://liuyanzhao.com/7812.html

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
言曌

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: