Redis 基本知识以及常用命令操作

此篇博客仅围绕 redis 命令操作,需要安装及深入的redis知识请见博客 Redis高性能缓存数据库

redis 常用命令操作

redis 的数据类型

redis存储的是:key:value格式的数据,其中key都是字符串,value有5中不同的数据结构

字符串类型 string

  • stringredis最基本的类型,你可以理解成与Memcached一模一样的模型,一个key对应一个value
  • string类型是二进制安全的,意思是redisstring可以存储任何数据,如图片或者序列化的对象

哈希类型 hash

  • redishash是一个键值对集合
  • redis hash是一个string类型的fieldvalue的映射表,hash特别适用于存储对象
  • 类似java里面的Map<String,Object>

列表类型 list

  • redislist是每个元素都是String类型双向链表,可以用过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List既可以作为栈,也可以作为队列,使用List结构,我们可以轻松的实现最新消息排行榜

集合类型 set

  • redisset是String类型无序集合,它是通过HashTable实现的

有序集合类型 zset(sorted set)

  • rediszsetset一样也是string类型元素的集合
  • 不同的是每个元素都会关联一个double类型的分数
  • redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复

常用的指令

其他指令

  • 切换db:SELECT index
  • 默认使用 0 号数据库 :SET db_number 0
  • 设置过期时间:EXPIRE key 60 60秒后过期
  • 设置为永不过期:PERSIST key
  • 删除当前数据库中的所有Key:flushdb
  • 删除所有数据库中的key:flushall

字符串类型的String

  • 赋值命令:SET key value
    如果key不存在,创建该key并赋值,返回OK,如果key已经存在,则覆盖其原有值,返回OK
  • 取值指令:GET key
    获取指定的key的value,如果key存在返回对应的value,如果key不存在,返回null
  • 数字递增:INCR key
    将指定的key的value原子性递增1,如果key不存在,其初始值为0,在incr之后其值为1
  • 数字递减:DECR key
    将指定的key的value原子性递减1,如果key不存在,其初始值为0,在incr之后其值为-1
  • 增加指定整数:INCRBY key increment
    将指定key的value原子性增加increment,如果不存在,其初始值为0,在incrby之后增加increment值,操作成功则返回增加后的value值
  • 减少指定整数:DECRBY key decrement
    将指定key的value原子性减少 decrement,如果不存在,其初始值为0,在decrby之后减少 decrement值,操作成功则返回较少后的value值
  • 像尾部追加值:APPEND key value
    如果key已经存在,APPEND命令将参数value的数据追加到已存在value的末尾,如果该key不存在,APPEND命令会创建一个新的key value,返回追加后的字符串长度

哈希类型 hash

  • 赋值命令:HSET key field value
    为指定的key(对象/集合)添加属性并设置值,如果key不存在,该命令将创建新key(对象/集合)以用于存储参数中的属性对,如果参数汇总的Field(属性)在该key中已经存在,则用新值覆盖其原有值,返回1表示新的Field(属性)被设置了心智,0标识Field已经存在,用新值覆盖原有值。
  • 取值命令:HGET key field
    返回值key(对象/集合)中指定Field(属性)的关联值,如果参数中的key或Field不存在,则饭后null。
  • 删除字段:HDEL key field [field ...]
    从指定key(对象/集合)的Hashes Value中删除参数中指定的多个字段,如果不存在的字段兼备忽略,返回实际删除的Field数量,如果key不存在,则将其视为空Hashes,并返回0。
  • 批量赋值:HMSET key field value [field value...]
    在这里插入图片描述
    逐对一次设置参数中给出的Field/Value对,如果其中某个Field已经存在,则用心智覆盖原有值,如果key(对象/集合)不存在,则创建新key(对象/集合),同时设定参数汇总的Field/Value。
  • 获取多个字段的值:HMGET key field [field...]
    在这里插入图片描述
    获取参数中指定Fields关联的一组Values,其返回顺序等同于Fields的请求顺序,如果请求的Field不存在,其值返回null。

列表类型list

  • 向列表头部添加元素:LPUSH key value [value...]
    向列表左边添加元素,如果该key不存在,创建一个与key关联的空链表,之后在将数据从链表的头部插入,操作成功则返回插入后链表中元素的数量。
  • 向尾部添加元素:RPUSH key value [value...]
    向列表右边添加元素,如果该key不存在,创建一个与key关联的空链表,之后在将数据从链表的尾部插入,操作成功则返回插入后链表中元素的数量。
  • 获得列表:LRANGE key start stop
    该命令的参数start和stop代表起始值,即0表示链表的头部的第一个元素,其中start可以为负值,-1标识链表中的最后一个元素,即尾部元素,-2标识倒数第二个并以此类推,该命令在获取元素时,start和stop位置上的元素也会被取出,如果start的值大于链表中元素的数量,空链表将会被返回,如果stop的值大于元素的数量,该命令咋获取从start(包括start)开始,链表中剩余的所有元素,注:redis的列表中起始索引为0。显然,LRANGE numbers 0 -1可以获取列表中的所有元素,返回指定范围内元素的列表。
  • 列表进行修剪:LTRIM key start stop
    让列表只保留指定区间的元素,不在指定区间之内的元素都将被删除,下标0表示列表头部第一个元素,以1表示列表头部的第二个元素,以此类推,你也可以使用附属下标,以-1表示列表尾部的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
  • 元素从左边出栈:LPOP key
    返回并弹出指定key关联的链表中的第一个元素,即头部元素,如果该key不存在,返回null,LPOP命令执行两步操作:第一个是将列表左边的元素从列表中移除,第二部是返回被移除的元素值。
  • 元素从右边出栈:RPOP key
    返回并弹出指定key关联的链表中的最后一个元素,即尾部元素,如果该key不存在,返回null,RPOP命令执行两步操作:第一个是将列表右边的元素从列表中移除,第二部是返回被移除的元素值。
  • 获取列表中元素的个数:LLEN key
    返回指定key关联的链表中元素的数量,如果key不存在,则返回0,如果与该key关联的Value的类型不是链表,则返回相关的错误信息。
  • 获取指定索引的元素值:LINDEX key index
    该命令将返回链表中指定元素(index)的元素,index 是0-based,表示从头部位置开始的第index的元素,如果index为-1,表示尾部元素,如果与该key关联的不是链表,该命令将返回相关的错误将信息,如果曹处index返回null。

集合类型set

  • 增加元素:SADD key member [member ...]
    如果插入的过程中,参数中有的成员在Set中已经存在,该成员将被忽略,而其他成员仍将会被正常插入,如果执行该命令前,该key并不存在,该命令将会创建一个新Set,此后再将参数中的成员陆续插入。返回实际插入的成员数量。
  • 获得集合中元素的个数:SCARD key
    返回Set中成员的数量,如果key并不存在,返回0。
  • 判断元素是否在集合中:SISMEMBER key member
    判断参数中指定成员是都已经存在与key相关联的set集合中,返回1表示已经存在,0表示不存在,或该key本身并不存在。
  • 获得集合中的所有元素:SMEMBERS key
    获取与该key关联的Set中所有的成员,如果key不存在返回空集合。
  • 从集合中弹出一个元素:SPOP key
    随机的移除并返回set中的某一成员,由于set中元素的布局不受外部控制,因此无法像List那样确定哪个元素位于set的头部或者尾部,返回移除的成员,如果key并不存在,则返回null。
  • 删除元素:SREM key member [member ...]
    从与key关联的set中删除参数中指定的成员,不存在的参数成员将被忽略,如果key并不存在,将视为空set处理,返回从set中实际移除的成员数量,如果没有则返回0。
  • 随机获得集合中的元素:SRANDMEMBER key [count]
    和SPOP一样,随机的返回Set中的一个成员,不同的是该命令并不会删除返回的成员。还可以传递count参数来一次随机获得多个元素,根据count的正负不同,具体表现也不同,当count为正数时,SRANDMEMBER 会随机从集合里获得count个不重复的元素,如果count值大于集合中的元素个数,就返回集合中的全部元素,当count为负数时,会随机从集合里获取 |count| 个的元素,如果 |count| 大于集合中的元素,则返回全部元素,不够的以重复的元素补齐,如果key不存在返回null。

有序集合类型zset (sorted set)

  • 增加元素:ZADD key score member [score][member]
    在这里插入图片描述
    添加参数中指定的所有成员及其分数到指定key的 Sorted Set中,在该命令中我们可以指定多组 score/member作为参数。如果在添加时参数中的某一成员已经存在,该命令将更新此成员的分数为新值,同时再将该成员基于新值重新排序。如果键不存在,该命令将为该键创建一个新的 Sorted Set value,并将 score/member对插入其中,如果该键已经存在,但是与其关联的 valueSorted不是 Set类型,相关的错误信息将被返回添加成功返回实际插入的成员数量

  • 获得集合中的元素个数:ZCARD key
    返回Sorted Set中的成员数量,如果key不存在,则返回0。

  • 获得指定分数范围内的元素个数:ZCOUNT key min max
    该命令用于获取分数(score)在min和max之间的成员数量(min=<score=max)如果加上了着表明是开区间例如 keymin max则表示(minscore<max)c同理 zcount key minmax则表明(in=scoremax)返回指定返回数量。

  • 获得元素的分数:ZSCORE key member
    如果该成员存在,以字符串的形式返回其分数,否则返回null。

  • 增加某个元素的分数:ZINCRBY key increment member
    在这里插入图片描述
    该命令将为指定Key中的指定成员增加指定的分数。如果成员不存在, 该命令将添加该成员并假设其初始分数为0, 此后再将其分数加上increment, 如果Key不存在, 该命令将创建该Key及其关联的SortedSet, 并包含参数指定的成员, 其分数为increment参数。如果与该Key关联的不是SortedSet类型, 相关的错误信息将被返回。如果不报错则以串形式表示的新分数。

  • 获得排名在某个范围的元素列表(分数从小到大):ZRANGE key start stop [WITHSCORES]
    在这里插入图片描述
    该命令返回顺序在参数start和stop指定范围内的成员, 这里start和stop参数都是0-based, 即0表示第一个成员, -1表示最后一个成员。如果start大于该SortedSet中的最大索引值, 或start>stop, 此时一个空集合将被返回。如果stop大于最大索引值, 该命令将返回从start到集合的最后一个成员。如果命令中带有可选参数WITH SCORES项, 该命令在返回的结果中将包含每个成员的分数值, 如value 1, score 1, value 2,score2…

  • 获得排各在某个范围的元素列表(元素分数从大到小序) :ZREVRANGE key start stop[WITH SCORES]
    该命令的功能和ZRANGE基本相同,唯一的差别在于该命令是通过反向排序获取指定位置的成员,即从高到低的顺序,如果成员具有相同的分数,则按降序字典顺序排序。

  • 获取指定分数范围的元素(分数从小到大):ZRANGENYSCORE key min max [WITHSCORES][Limit offset count]

  • 获取指定分数范围的元素(分数从大到小):ZRANGENYSCORE key max min [WITHSCORES][Limit offset count]

  • 获得元素的排名:ZRANK key member
    在这里插入图片描述
    zset 中的成员都是按照分数从低到高的顺序存储,该命令将返回参数中指定成员的位置值,其中0标识第一个成员,它是zset中分数最低 的成员,如果该成员存在,则返回它位置索引值,否则返回null。

  • 删除一个或多个元素:ZREM key member [member ...]
    该命令将移除参数中指定的成员,其中不存在的成员将被忽略,如果与该key关联的Value不是Sorted Set,相应的错误信息将被返回,如果操作成功则返回实际被删除的成员数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名技术极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值