Redis五大数据类型以及相关操作

Redis五大数据类型

文章目录

  • Redis五大数据类型
    • key
    • 字符串string操作命令
    • 列表list
    • 集合set
    • 哈希hash
    • 有序集合zset (sorted set)

key

  • keys * 查看当前库的所有键
  • exists 判断某个键是否存在
  • type 查看键的类型
  • del 删除某个键
  • expire 为键值设置过期时间,单位秒
  • ttl > 查看还有多久过期,-1表示永不过期,-2表示已过期
  • dbsize 查看当前数据库中key的数量
  • flushdb 清空当前库
  • Flushall 通杀全部库

字符串string操作命令

String类型,也就是字符串类型,是Redis中最简单的存储类型

其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减的操作
  • float:浮点类型,可以做自增、自减操作

具体操作:

  • set 设置指定的值
  • get 获取指定的值
  • append 将给定的追加到原值的末尾
  • strlen 获取值的长度
  • setnx 只有在key不存在时设置key的值
  • incr 将key中存储的数字值增1
    只能对数字值操作,如果为空,新增值为1
  • decr 将key中存储的数字值减1
    只能对数字之操作,如果为空,新增值为-1
  • incrby /decrby 步长将key中存储的数字值增减,自定义步长
  • mset 同时设置一个或多个key-value对(一个key-value设置失败,都失败)
  • mget 同时获取一个或多个value
  • msetnx 同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
  • getrange <起始位置> <结束位置>获得值的范围(两边都是闭区间)
  • setrange <起始位置> 用覆盖所存储的字符串值,从<起始位置>开始
  • setex <过期时间> 设置键值的同时,设置过期时间,单位秒
  • getset 以新换旧,设置了新值的同时获取旧值

更多请查看手册Redis 字符串(String)_redis教程

列表list

1)单键多值
2)Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
3)它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
具体操作:

  • lpush/rpush 从左边/右边插入一个或多个值
  • lpop/rpop 从左边/右边吐出一个值。若吐完了,则key自动删除
  • rpoplpush 从列表右边吐出一个值,插到列表左边(只有右出左进)
  • lrange 按照索引下标获得元素(从左到右)
    获得全部元素:lrange 0 -1
  • llen 获得列表长度
  • linsert before 在value的前面插入newvalue
  • lrem 从左边删除n个value(从左到右)

集合set

1)Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
2)Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。

  • sadd .... 将一个或多个 member 元素加入到集合key 当中,已经存在于集合的 member 元素将被忽略。
  • smembers 取出该集合的所有值。
  • sismember 判断集合是否为含有该值,有返回true,没有返回false
  • scard 返回该集合的元素个数
  • srem ....删除集合中的某个元素value1,value2。
  • spop 随机从该集合中吐出一个值
  • srandmember 随机从该集合中取出n个值。(会从集合中删除,并且集合元素为空,集合自动删除)
    不会从集合中删除
  • sinter 返回两个集合的交集元素
  • sunion 返回两个集合的并集元素
  • sdiff 返回两个集合的差集元素

哈希hash

  • hset 给key集合中的 field键赋值value
  • hget 从key1集合field取出 value
  • hmset ... 批量设置hash的值
  • hgetal l获取所有的filed-value
  • hexists key 查看哈希表 key 中,给定域 field 是否存在。
  • hkeys 列出该hash集合的所有field
  • hvals 列出该hash集合的所有value
  • hincrby 为哈希表 key 中的域 field 的值加上增量 increment
  • hsetnx 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

有序集合zset (sorted set)

  • zadd key score1 member[score2 member2] 向有序集合中添加一个或多个成员,或者更新已存在的成员分数(注意是分数在前,成员在后)
  • zrange key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间的成员【0,-1】查看所有,
    加上withscores后返回值会带上分数
  • zincrny key increment member 有序集合中对指定成员的分数上加上增量increment
  • zrem key member [member ...] 移除有序集合中一个或多个成员
  • zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
  • zrevrangebyscore key max min [withscores] [limit offset count]同上,改为从大到小排列。(注意是先max 后min)
  • zrank key member: 获取sorted set中元素的排名,默认都是升序,如果要降序则在命令的Z后面添加REV即可
  • zcount 统计该集合,分数区间内的元素个数

你可能感兴趣的:(#,Redis,redis,数据库,缓存)