Redis-五大数据类型

151 阅读5分钟

Redis五大数据类型

String(字符串)

append 追加字符串

语法:append key value

  • key 存在 --> 追加字符串
  • key 不存在 --> 新建一个 key value,相当于set key value ,但又有些不同:新建的key的位置永远在原来第一个key的后面

image.png

image.png

strlen 查看key的长度

语法:strlen key

image.png

incr 自增 i++

语法:incr key**

  • key中的value必须是数字,不然会报错

image.png

decr 自减 i--

语法:decr key

image.png

incrby 自增 i+=step

语法:incrby key step

image.png

decrby 自减 i-=step

语法:decrby key step

image.png

getrange 获取value在区间[a,b]的值

语法:getrange key a b

image.png

setrange 将value从位置a开始替换字符串

语法:setrange key a str

  • str有多长就替换多长
  • 从位置a开始,如果不够替换会默认继续往后追加
  • 从位置a开始,如果够替换,就将str替换进去,其余不变。

image.png

setex 设置key的value失效时间

语法:setex key seconds value

  • ttl key 查看key存在的剩余时间,永久为-1

image.png

setnx set if no exist

语法:setnx key value

  • 要设置的key存在,该语句失效
  • 要设置的key不存在,设置这个key value image.png

mset 同时设置多个key value

语法:mset k1 v1 k2 v2 k3 v3

image.png

mget 同时获取多个key的value

语法:mget k1 k2 k3

image.png

msetnx 同时设置多个key value,但是一个key失效,其他key也失效

语法:msetnx k1 v1 k2 v2

  • 要设置的key至少有一个在原先就存在-->要设置的key全部失效----->原子性
  • 要设置的key在原先都不存在--->创建key value

image.png

getset 先返回原先的值,再将原先的值修改

语法:getset key value

  • 若原先没有值,则返回nil
  • 若原先有值,先返回原先的值,再将原先的值修改

image.png

存一个对象

语法:mset 对象名:对象值:对象属性1 对象属性1的值 对象名:对象值:对象属性2 对象属性2的值 .....

  • 关于对象,这里设计的key的设计 --> 对象名:对象值:对象属性 image.png

List(列表)

  • List可以看成一个双向链表
  • 所有的命令都是以L(大小写都可)开头,有特例
  • 特例:
    • rpush 右插入
    • rpop 右弹出
    • rpoplpush 右弹出左插入
    • exists 判断是否存在

lpush 存值到列表头部(最左边)

语法:lpush list_name key_value

image.png

rpush 存在到列表尾部(最右边)

语法:rpush list_name key_value

image.png

lrange 查看区间[A,B]内的列表的值

语法:lrange list1 a b

image.png

lpop 取列表头部(最左边)的值,list被改变

语法:lpop list_name

image.png

rpop 取列表尾部(最右边)的值,list被改变

语法:rpop list_name

image.png

lindex 获得列表指定下标的值

语法:lindx list_name index

image.png

llen 获得列表的长度

语法:llen list_name

image.png

lrem 移除指定值,指定移除几个

语法:lrem list_name rem_number rem_value

  • rem_number为几就移除几个,如果rem_number大于list中的数量,则把list中的这个rem_value全移除,不会报错。 image.png

ltrim 截取[a,b]内的值,列表发生改变

语法:ltrim list_name a b

image.png

rpoplpush 移除a列表的最右边元素,并将它移动到b列表

语法:rpoplpush list_name1 list_name2

image.png

lset 将指定下标的值替换

语法:lset list_name index value

  • 如果list不存在,就会报错

image.png

image.png

exists 判断列表是否存在

语法:exist list_name

image.png

linsert 在列表中插入值

语法:linsert list_name before/after old_value new_value

image.png

image.png

Set(集合)

  • Set中的值是不重复的
  • Set命令以S开头
  • Set无需不重复,随机

sadd 往Set集合中添加值

语法:sadd set_name value

image.png

smembers 查看set集合中所有的值

语法:smembers set_name

image.png

sismember 判断当前值是否在Set集合中

  • 返回值为1 -->存在
  • 返回值为0 -->不存在 语法:sismember set_name value

image.png

scard 获取set集合中的值的个数

语法:scard set_name

image.png

srem 移除set集合中的指定元素

语法:srem set_name value

image.png

srandmember 随机抽取元素

  • number为抽取元素的个数,默认为1 语法:scard set_name (number)

image.png

spop 随机删除set集合中的值

  • number为删除元素的个数,默认为1 语法:spop set_name (number) image.png

smove 将一个指定的值移动到另一个set集合

语法:smove set_name new_set_list value

image.png

sdiff 两个集合的差集

语法:sdiff set_name1 set_name2

image.png

sinter 两个集合的交集

语法:sinter set_name1 set_name2

image.png

sunion 两个集合的并集

语法:sunion set_name1 set_name2

image.png

Hash(哈希)

  • 想象成Map集合, key-<key,value>
  • 原先的value变成了一个map集合
  • 所有的命令以H开头
  • 更适合存储对象

hset 将字段和字段值存入hash表

语法:hset key field value

image.png

hget 获取hash表中对应字段的值

语法:hget key field

image.png

hmset 一次性设置多个字段及它们对应的值

语法:hmset key filed1 value1 key field2 value2 ...

image.png

hmget 一次性获取多个哈希表中多个字段的值

语法:hmget key field1 field2

image.png

hexists 判断哈希表中是否存在某个字段

语法:hexists key field

image.png

hgetall 获取哈希表中所有的字段和字段值

语法:hgetall key

image.png

hkeys 获取哈希表中所有的字段

语法:hkeys key

image.png

hvals 获取哈希表中所有的字段值

语法:hvals key

image.png

hlen 获取哈希表中有多少个字段

语法:hlen key

image.png

hdel 删除哈希表的字段

语法:hdel key field1 (field2 ....)

image.png

hincrby 将哈希表中的字段值增加值

  • number 为增加的值
  • 增加的字段必须是数字 语法:hincrby key field number

image.png

Zset(有序集合)

  • 在set的基础上,增加了一个字段score,可以通过该字段来进行排序
  • score相同,则按字典顺序排序

zadd 向有序集合添加一个或多个成员,或者更新已存在成员的分数

用法: zadd key scoreq member1 score2 member2 ...

image.png

zcard 获取有序集合的成员数

用法: zcard key

image.png

zcount 计算在有序集合中指定区间score的成员数

用法: zcount key min max

image.png

zincrby 有序集合中对指定成员的分数加上增量 n

用法: zincrby key n member

image.png

zscore 返回有序集中,成员的分数值

用法: zscore key member

image.png

zrank 返回有序集合中指定成员的索引

用法: zrank key member

image.png

zrange 通过索引区间返回有序集合成指定区间内的成员

用法: zrange key start end

image.png

zrangebylex 通过字典区间返回有序集合的成员

用法: zrangebylex key min max

image.png

zrangebyscore 通过分数返回有序集合指定区间内的成员 -inf 和 +inf分别表示最小最大值,只支持开区间()

用法: zrangebyscore key min max

image.png

zrem 移除有序集合中一个/多个成员

用法:zrem key member1 member2..

image.png

zrevrange 返回有序集中指定区间内的成员,通过索引,分数从高到底

用法:zrevrange key start end

image.png