redis常用命令

1.简介

Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库。

redis的数据格式都是(key,value),key为String类型,value支持5种数据类型。

注:redis是内存数据库,所有redis服务器关机或者重启时,数据会消失。为避免这种情况,需要设置数据持久化,目前有两种数据持久化方式:RDB和AOF(可参见redis 数据持久化的几种方式 - 知乎

2.登录

redis登录默认无密码,如果需要密码,可以进行设置。

1.本机登录方式
redis-cli

2.远程登录方式
redis-cli -h host -p port

选择其他数据库语句如下:

redis> SELECT 1
OK

3. key常见命令

3.1 查看数据库下所有key

1.查看所有key
redis> keys *

2.查看符合正则匹配的key
redis> keys patter

3.2 key设置过期时间

redis> EXPIRE key seconds

更多方法详见:Redis 键(key) | 菜鸟教程


3.3 检查给定 key 是否存在。

redis> EXISTS key

3.4 删除key

1.单个删除
  redis> del key
2.删除当前数据库中的所有Key  
  redis> flushdb  
3.删除所有数据库中的key  
  redis> flushall

4.value

redis 支持5种数据类型

数据类型简介特性

String

(字符串)

二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M

Hash

(字典)

键值对集合,即编程语言中的Map类型

适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)

应用场景

存储、读取、修改用户属性

List

(列表)

链表(双向链表)

增删快,提供了操作某一段元素的API。

适用于只增删,不修改,且允许有重复元素的场景。

应用场景

1,最新消息排行等功能(比如朋友圈的时间线)

2,消息队列

Set

(集合)

哈希表实现,元素不重复

添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作

适用于元素具有唯一性,只增删,不修改,需要求交/并/差集的场景。

应用场景

1、共同好友

2、利用唯一性,统计访问网站的所有独立ip

3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐

Sorted Set

(有序集合)

将Set中的元素增加一个权重参数score,元素按score有序排列

数据插入集合时,已经进行天然排序

适用于元素具有唯一性且需要排序,只增删,不修改的场景

应用场景

1、排行榜

2、带权重的消息队列

4.1 String 常用命令

4.1.1 set
设置key value(数据库中没有该key时,则新增,有时,则更新value)
redis> set key value

设置key value,并返回旧的value
redis> getset key value

只有在 key 不存在时设置 key 的值
redis> SETNX key value

同时设置一个或多个 key-value 对
redis> MSET key value [key value ...]
4.1.2 get
获取value
redis> get key

获取所有(一个或多个)给定 key 的值
redis> MGET key1 [key2..]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
redis> MSETNX key value [key value ...]

更多命令参见:Redis 字符串(String) | 菜鸟教程

4.2 hash常用命令

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

redis>  HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
redis>  HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
4.2.1 set
设置key field value(数据库中没有该key field时,则新增,有时,则更新value)
redis> hset key field value

只有在 field 不存在时设置 value
redis> HSETNX key field value

同时设置一个或多个 field-value 对
redis> HMSET key field value [field value ...]
4.2.2 get
获取key field 对应的value
redis> hget key field

获取所有(一个或多个)给定 field 的value
redis> HMGET key field1 [field2..]

获取在哈希表中指定key的所有field和value
redis> HGETALL key

获取哈希表中的所有field
redis> HKEYS key

获取哈希表中的所有value
redis> HVALS key
4.2.3 delete
删除一个或多个哈希表字段
redis> HDEL key field1 [field2]
4.2.4 exist
查看哈希表 key 中,指定的字段是否存在。
redis> HEXISTS key field

其他命令参见:Redis 哈希(Hash) | 菜鸟教程

4.3 list

Redis列表是简单的字符串列表,按照插入顺序排序。左边为列表的头部,右边为列表尾部

注意:L表示左,R表示右。数字m表示从左数第m+1个value,-m表示从右数第m个value

(0表示左边第一个元素,-1表示右边第一个元素)

示例:

redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 10

1) "mysql"
2) "mongodb"
3) "redis"
4.3.1 添加 -PUSH
将一个或多个值插入到列表头部
redis> LPUSH key value1 [value2]

将一个或多个值插入到列表尾部
redis> RPUSH key value1 [value2]

将value插入到列表value1前或者后
redis> LINSERT key BEFORE|AFTER value1 value
4.3.2 弹出并删除 -POP
移出并获取列表的第一个元素
redis> LPOP key

移出并获取列表的最后一个元素
redis> RPOP key
4.3.3 从表A移入表B -POPPUSH

将元素从一个列表移出,移入到另外一个列表,此处不细讲

4.3.4 仅查看
获取列表长度
redis> LLEN key

获取列表指定范围内的元素
(返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推)
redis> LRANGE key start stop
4.3.5 仅删除,切批量删除
移除|count|个key下值为value的部分,count为负数,表示从list末尾开始移除
redis> LREM key count VALUE


裁剪 LTRIM
让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
redis> LTRIM KEY_NAME START STOP

4.5 set

Redis 的 Set 是 String 类型的无序集合(所以每次删除时,并不是按照添加顺序删除的)。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

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

set的命令特点是命令首字母为s

示例:

redis 127.0.0.1:6379> SADD runoobkey redis
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey

1) "mysql"
2) "mongodb"
3) "redis"
4.5.1 添加
向集合添加一个或多个成员
redis>SADD key member1 [member2]
4.5.2 查看
获取集合key的成员数量
redis>SCARD key

返回集合key中的所有成员
redis>SMEMBERS key


随机返回key集合中count个成员
redis>SRANDMEMBER key [count]

判断 member 元素是否是集合 key 的成员
redis>SISMEMBER key member



4.5.3 删除
随机移除并返回key集合中的count个元素
redis> SPOP key count

移除集合key中一个或多个成员
redis> SREM key member1 [member2]

4.5.4 查交集-inter
返回给定所有集合的交集
redis> SINTER key1 [key2]

返回给定所有集合的交集并存储在 destination 中
redis> SINTERSTORE destination key1 [key2]
4.5.5 查并集-union
返回所有给定集合的并集
redis>SUNION key1 [key2]


所有给定集合的并集存储在 destination 集合中
redis>SUNIONSTORE destination key1 [key2]
4.5.6 查差集-diff
返回第一个集合中存在,但是其他集合中均不存在的元素。
redis>SDIFF key1 [key2]


将第一个集合中存在,但是其他集合中均不存在的元素存储在 destination 中,并返回元素个数
redis> SDIFFSTORE destination key1 [key2]
4.5.7 移动 -move
将 member 元素从 source 集合移动到 destination 集合
redis> SMOVE source destination member

4.6 sorted set

sorted set是redis的有序集合。

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

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

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

命令说明:

下面命令中的member指集合成员,start,end为元素在集合中的位置,max,min指分数

对于区间数据,在数据左边添加"("表示开区间;

对于分数区间,-inf代表负无穷小, +inf 代表正无穷大

4.6.1 添加
向有序集合添加一个或多个成员,或者更新已存在成员的分数
redis>ZADD key score1 member1 [score2 member2]
4.6.2 查看
1.获取有序集合的成员数
redis> ZCARD key

2.按照分数

获取成员member的分数值
redis> ZSCORE key member

计算分数在[min,max]区间内的成员数量
redis> ZCOUNT key min max

返回分数在[min,max]区间内的成员
redis> ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

逆序返回分数在[min,max]区间内的成员,按照分数从高到低排列
redis> ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

3.按照位置

返回成员member的位置
redis> ZRANK key member

返回成员member的倒序位置,即按分数值从大到小排序
redis> ZREVRANK key member

返回集合中位置位于[start,stop]区间的成员
redis> ZRANGE key start stop [WITHSCORES]

返回集合中逆序位置位于[start,stop]区间的成员
redis>ZREVRANGE key start stop [WITHSCORES]
4.6.3 删除
移除有序集合中的一个或多个成员
redis> ZREM key member [member ...]

移除有序集合中给定的排名区间的所有成员
redis> ZREMRANGEBYRANK key start stop

移除有序集合中给定的分数区间的所有成员
redis> ZREMRANGEBYSCORE key min max
4.6.4 交集
计算给定的numkeys个有序集的交集并将结果集存储在新的有序集合 destination 中
ZINTERSTORE destination numkeys key_1 [key_2 ...key_numkeys]
4.6.5 并集
计算给定的numkeys个有序集的并集,并存储在新的有序集合 destination 中
redis> ZUNIONSTORE destination numkeys key_1 [key_2 ...key_numkeys]
4.6.7 按照member进行操作

有序集合也可以按照member进行操作,其区间称为字典区间,通过匹配字符串进行

在有序集合中计算指定字典区间内成员数量
redis> ZLEXCOUNT key min max

通过字典区间返回有序集合的成员
redis>ZRANGEBYLEX key min max [LIMIT offset count]

移除有序集合中给定的字典区间的所有成员
redis>ZREMRANGEBYLEX key min max

详见: Redis 有序集合(sorted set) | 菜鸟教程

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值