Redis常用数据类型

select 命令切换数据库
dbsize 查看当前数据库的key的数量
flushdb 清空当前库
flushall 通杀全部库

  • key键操作
  • keys *:查看当前库所有key(匹配:keys *1)
  • exists key:判断某个key是否存在
  • type key:查看你的key是什么类型
  • del key:删除指定的key数据
  • unlink key:根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。
  • expire key [number]:为key设置过期时间,时间以秒为单位,比如expire key 10表示十秒后过期。
  • ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期
  • 字符串(String)

String的数据结构为动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。⚠️字符串最大长度为512M。
常用命令

  • set <key> <value>:添加键值对
  • get <key>:查询对应键值
  • append <key> <value>:将给定的追加到原值的末尾
  • strlen <key>:获得值的长度
  • setnx <key> <value>:只有在key不存在时,设置key的值
  • incr <key>:将key中存储的数字值增1,只能对数字值操作,如果为空,新增值为1
  • decr <key>:将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为-1
  • incrby/decrby <key> <步长>:将key中存储的数字值增减,自定义步长
  • mset <key1> <value1> <key2> <value2>…:同时设置一个或多个key-value对
  • mget <key1> <key2> <key3>…:同时获取一个或多个value
  • msetnx <key1> <value1> <key2> <value2>…:同时设置一个或多个key-value对,当且仅当所有给定key都不存在
  • getrange <key> <起始位置> <结束位置>:获得值的位置,类似Java中的substring,前包,后包
  • setrange <key> <起始位置> <value>:用覆写 所存储的字符串值,从<起始位置>开始(索引从0开始)
  • setex <key> <过期时间> <value>:设置键值的同时,设置过期时间,单位秒
  • getset <key> <value>:以新换旧,设置了新值同时获得旧值
  • 列表(List)

单键多值,Redis列表是简单的字符串列表,按照插入顺序排序,底层实际是个双向链表。
常用命令

  • lpush/rpush <key> <value1> <value2> <value3>…:从左边/右边插入一个或多个值。
  • lpop/rpop <key>:从左边/右边吐出一个值。值在键在,值光键亡。
  • rpoplpush <key1> <key2>:从列表右边吐出一个值,插到列表左边。
  • lrange <key> <start> <stop>:按照索引下标获得元素(从左到右),lrange key 0 -1表示取所有。
  • lindex <key> <index>:按照索引下标获得元素(从左往右)。
  • llen <key>:获得列表长度。
  • linsert <key> before/after <value> <newvalue>:在的前面/后面插入插入值。
  • lrem <key> <n> <value>:从左边删除n个value(从左到右)。
  • lset <key> <index> <value>:将列表key下标为index的值替换成value。
  • 集合(Set)

set与list类似,也是一个列表的功能,特殊之处在于set是可以自动排重的。set是String类型的无序集合,它的底层其实是一个value为null的hash表,所以添加、删除和查找的复杂度都是O(1)。
set数据结构是dict字典,字典是用哈希表实现的。
常用命令

  • sadd <key> <value1> <value2>…:将一个或多个member元素添加到集合key中,已经存在的member元素将被忽略。
  • smembers <key>:取出该集合的所有值。
  • sismember <key> <value>:判断集合是否含有该值,有1,没有0。
  • scard <key>:返回该集合的元素个数。
  • srem <key> <value1> <value2>…:删除集合中的某个元素。
  • spop <key>随机从集合中吐出一个值。
  • srandmember <key> <n>:随机从该集合中取出n个值。不会从集合中删除。
  • smove <source> <destination> value:把集合中一个值从一个集合移动到另一个集合。
  • sinter <key1> <key2>:返回两个集合的交集元素。
  • sunion <key1> <key2>:返回两个集合的并集元素。
  • sdiff <key1> <key2>:返回两个集合的差集元素(key1中的,不包含key2中的)。
  • 哈希(Hash)

hash是一个键值对集合,是一个string类型的field和value的映射表,hash表特别适合用于存储对象。类似于Java里面的Map<String,Object>。
hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
常用命令

  • hset <key> <field> <value>:给集合中的键赋值
  • hget <key> <field>:从集合域中取出value
  • hmset <key1> <field1> <key2> <field2>…:批量设置hash值
  • hexists <key> <field>:查看hash表key中,给定域field是否存在,存在1,不存在0
  • hkeys <key>:列出该hash集合的所有field
  • hvals <key>:列出该hash集合的所有value
  • hincrby <key> <field> <increment>:为hash表key中的域field的值加上增量increment
  • hsetnx <key> <field> <value>:将哈希表key中的域field的值设置为value,当且仅当域field不存在
  • 有序集合(Zset)

zset与普通集合set非常相似,是一个没有重复元素的字符串集合。有序集合的每个成员都关联了一个评分(score),这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员时唯一的,但是评分可以是重复的。
zset底层使用了两个数据结构(1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。(2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。
常用命令

  • zadd <key> <score1> <value1> <score2> <value2>…:将一个或多个member元素及其score值加入到有续集key当中。
  • zrange <key> <start> <stop> [WITHSCORES]:返回有序集合key中,下标在 之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。
  • zrangebyscore key min max [withscores] [limit offset count]:返回有序集key中,score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列。
  • zrevrangebyscore key max min [withscores] [limit offset count]:同上,改为从大到小排序。
  • zincrby <key> <increment> <value> :为元素的score加上增量。
  • zrem <key> <value>:删除该集合下,指定值的元素。
  • zcount <key> <min> <max>:统计该集合,分数区间内的元素个数。
  • zrank <key> <value>:返回该值在集合中的排名,从0开始。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值