Redis命令

Redis数据类型

redis总共有五种数据类型

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

hash(哈希/字典)  # 键值对的集合
# 适用存储对象,并且可以像数据库中update一个属性一样修改某一项的值
# 场景: 存储,读取,修改用户属性

list(列表) # 链表(双向链表)
# 增删查快,提供了操作某一段元素的API
# 最新消息排行等功能(比如朋友圈的时间线); 消息列队

set(无序集合) # 哈希表实现,元素不重复
# 添加,删除,查找的复杂度都是O(1)--算法; 为集合提供求交集,并集,差集等操作
# 场景: 共同好友; 利用唯一性,统计访问网站的独立IP; 好友推荐时,很具tag求交集,大于某个阈值就可以推荐

zset(有序集合) # 将set中元素增加一个权重参数score,元素按score有序排列
# 数据插入集合时,已经进行天然排序
# 场景: 排行榜; 带权重的消息队列

redis命令

C:\Users\Yue>redis-cli
127.0.0.1:6379> Redis命令

# 命令操作
ping        # 用来测试redis是否连通,返回值是pong
info        # 获取系统信息
echo        # 打印输入的内容,测试使用
quit        # 退出
select 1    # 切换库 redis中有16个库 0 ~ 15

# 值操作
set key value       # 设置key value 键值对(例:set name nayue) 再次插入会修改
get key             # 获取值
del key             # 删除指定的一个或者多个key 不存在的会忽略


exists key          # 判断key是否存在,存在未1,不存在为0
 
expire key seconds # 给指定的key设置存活时间,当key过期以后,就自动删除(set name youzi \ expire name 5)
ttl key            # 查看key的存活时间(倒计时),-2 key不存在 -1 永久生效
pexpire key 毫秒   # 给一个key 设置过期时间,单位是毫秒 
pttl key           # 查看key的存活时间,单位为毫秒

keys pattern        # 查找所有符合pattern 的key,支持linux的通配符 (例:查找所有 keys * )

move key db         # 移动当前指定的key到指定的db库里面,成功返回1,失败返回0 (move name 2)
randomkey key       # 随机获取一个key,但是不删除,如果数据库为空,则返回空

rename key newkey   # 重命名key,如果源key不存在,则报错,如果目标newkey存在,则覆盖
renamenx key newkey # 重命名key,如果源key不存在,则报错,如果目标newkey存在,则不作出改变

type key            # 查看key所存储的value数据类型,如果没有这个key,则返回none

Redis-string命令

127.0.0.1:6379> SET key value [EX seconds] [PX milliseconds] [NX|XX] # []内为可选参数
# 设置key value; 如果key存在,则覆盖,不存在,则新建
# EX seconds 超时时间 秒 
# PX milliseconds 超时时间 毫秒
# NX 如果键不存在,则新建,如果存在,则返回nil
# XX 只有键存在,才能操作

127.0.0.1:6379> GET key
# 获取key对应的value,只能获取一个,如果key存在,则返回值,如果key不存在,则返回nil

127.0.0.1:6379> MSET key value [key value ...] 
# 批量创建key vlaue对应关系,会覆盖已存在的key (mset k1 v1 k2 v2 ...)

127.0.0.1:6379> MGET key [key ...] 
# 批量获取key,如果不存在,则返回nil

127.0.0.1:6379> GETSET key value
# 给指定的key设置新value,并返回原来的value,如果key不存在,则返回nil

127.0.0.1:6379> STRLEN key # 返回value的长度

127.0.0.1:6379> APPEND key value # 如果key存在,则追加,如果key不存在,则新建

127.0.0.1:6379> INCR key # 将key中存在的数加1,只能对数字有效

127.0.0.1:6379> DECR key # 将key中存在的数值减1,只能对数字有效

127.0.0.1:6379> INCRBY key increment # 将key中存在的数值指定增加多少,只对数字有效

27.0.0.1:6379> DECRBY key decrement # 将key中存在的数值减少指定的值,只能对数字有效

127.0.0.1:6379> GETRANGE key start end # 切片,同python类似,不能使用步长

127.0.0.1:6379> INCRBYFLOAT key increment # 将key中存在的数值增加指定的浮点数 (默认保留17位)

Redis-list命令 列表

127.0.0.1:6379> LPUSH key value [value ...]
# 将一个或者多个value插入到列表的头部 

127.0.0.1:6379> LPOP key 
# 移除并返回列表key的头一个元素

127.0.0.1:6379> RPOP key 
# 移除并返回列表key的最后一个元素

127.0.0.1:6379> LRANGE key start stop 
# 查看列表指定的元素,全部显示是0,-1, (LRANGE libry 0 -1)

127.0.0.1:6379> RPUSH key value [value ...] 
# 将一个或者多个value插入到列表的尾部(最后边)

127.0.0.1:6379> RPUSHX key value 
# 将value插入到key的尾部,key必须存在才可以

127.0.0.1:6379> LPUSHX key value
# 将value插入到key的头部,key必须存在才可以

127.0.0.1:6379> LINDEX key index 
# 从表头开始,获取下标为index的value

127.0.0.1:6379> LINSERT key BEFORE|AFTER pivot value
# 将value插入到key指定的元素前或者后
# before 前 after 后
# 如果value不存在,则不操作

127.0.0.1:6379> LLEN key # 获取列表长度

127.0.0.1:6379> LREM key count value # 删除列表中的value
# count > 0 从表头往表尾的方向查找 删除匹配的count个value
# count = 0 全部删除 匹配的value
# count < 0 从表尾往表头的方向查找 删除匹配的count个value

127.0.0.1:6379> LSET key index value 
# 替换指定的索引位置的value,如果索引超出范围,则报错

127.0.0.1:6379> LTRIM key start stop # 列表的切片(裁剪), 超出为空,只能正向切

Redis-hash命令 字典

# {'A':{"a1":'b1',"a2':'b2',"a3":"b3"}} 类似

127.0.0.1:6379> HSET key field value 
# 给hash增加key 字段 value值            (127.0.0.1:6379> HSET home a1 g1)
# key不存在 则创建 key存在 则增加值 field存在 则修改value    (127.0.0.1:6379> HSET home a2 g2)

127.0.0.1:6379> HGET key field # 获取某个hash里面key的field的value

127.0.0.1:6379> HGETALL key # 获取所有的键值对 

127.0.0.1:6379> HLEN key  # 获取hase的长度

127.0.0.1:6379> HMSET key field value [field value ...] 
# 批量增加键值对 (HMSET home a1 b1 a2 b2 ...)

127.0.0.1:6379> HMGET key field [field ...] 
# 批量获取键值对

127.0.0.1:6379> HSETNX key field value  
# 给指定的hash增加键值对,如果原来的field存在,则操作无效,如果不存在,则新增

127.0.0.1:6379> HKEYS key # 获取hash表中所有的field

127.0.0.1:6379> HVALS key # 获取hash表中所有的valu

127.0.0.1:6379> HDEL key field [field ...]  # 删除hash表中的一个或者多个field-value

127.0.0.1:6379> HEXISTS key field # 判断hash表中的field是否存在,如果存在,则为1,不存在则为0

127.0.0.1:6379> HINCRBY key field increment # 给hash表中的field增加指定的数值,只限于数字

127.0.0.1:6379> HINCRBYFLOAT key field increment # 给hash表中的field增加指定的浮点,只限于数字

Redis-set命令 无序集合

127.0.0.1:6379> SADD key member [member ...]
# 给集合添加值,如果值存在,则什么都不操作,如果值不存在,则添加

127.0.0.1:6379> SMEMBERS key # 获取集合所有的成员

127.0.0.1:6379> SCARD key # 获取集合的个数(长度)

127.0.0.1:6379> SDIFF key [key ...] # 获取两个集合的差集,前面存在,但是后面不存在的
127.0.0.1:6379> SINTER key [key ...] # 获取两个集合的交集
127.0.0.1:6379> SUNION key [key ...] # 获取两个集合的并集

127.0.0.1:6379> SISMEMBER key member # 判断元素是否在集合中,如果存在,则为1,如果不存在则为0

127.0.0.1:6379> SMOVE source destination member
# 将指定的元素从一个集合移动到另外一个集合中
# 如果源集合存在,则移动,如果不存在,则忽略
# 如果目标集合存在,直接移动,如果目标集合不存在,则新建集合 再移动

127.0.0.1:6379> SPOP key [count] # 随机删除指定个数(默认1个)的元素,并把删除的元素打印出来

127.0.0.1:6379> SRANDMEMBER key [count] # 随机获取指定个数的元素 默认随机获取一个
# 如果count > 0; 如果count大于集合的总数的话,则全部取出; 如果count小于集合总数的话,则随机取出count个
# 如果count<0,则随机count的绝对值次取出值

127.0.0.1:6379> SREM key member [member ...] # 删除指定的一个或者多个元素

Redis-zset命令 有序集合

将Redis-set所有命令前第一个S换成Z即可 例:(sadd --> zadd)

posted @ 2020-06-02 16:39  CatdeXin  阅读(186)  评论(0)    收藏  举报