Redis 数据类型

一、Redis 的六大数据类型

  1. String(字符串):Redis 最基本的类型,可以保存字符串、整数和浮点数
  2. HASH(哈希):类似于 Java 中的 Map<String, Object>,是一个键值对应的无序列表
  3. LIST(列表):是一个链表,每一个节点都包含一个字符串,按照插入顺序排序;Redis 支持从链表的两端插入或者弹出节点
  4. SET(集合):是无序的,在它里面的每一个元素都是一个字符串,而且是独一无二,各不相同的
  5. ZSET(有序集合):Sorted Set,是一个有序集合,和 SET 一样也是 String 类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个 double 类型的分数,元素的排序正是依据分数的大小来决定的,ZSET 的成员是唯一的,但分数(score )却可以重复
  6. HyperLogLog(基数):作用是计算重复的值,以确定存储的数量;只提供基数的运算,不提供返回的功能,不常用
  7. 注:可以去 http://redisdoc.com/ 获的 Redis 常见数据类型操作命令

二、Redis 键(key)

  1. keys \*:列出所有 key 的名称,还支持通配符。eg:keys k?keys k*
  2. exists keyName:判断某个 keyName 是否存在,1 代表存在,0 代表不存在
  3. move keyName index:将 keyName 移动到第 index 号库中,当前库中就没有 keyName 了
  4. expire keyName 秒:为 keyName 设置过期时间,过期了就相当于从库中移除了
  5. ttl keyName:查看还有多少秒过期,-1 代表永不过期,-2 表示已过期
  6. type keyName:查看 keyName 是什么类型
  7. del keyName:在 keyName 存在时删除 keyName
  8. dump keyName:序列化给定 keyName,并返回序列化的值
  9. pexpire keyName 毫秒
  10. persist keyName:移除 keyName 的过期时间,keyName 将持久保持
  11. pttl keyName:以毫秒返回 keyName 的剩余时间
  12. randomkey:从当前数据库中随机返回一个 key
  13. rename keyName newName:修改 keyName 的名称
  14. renamenx keyName newName:仅当 newName 不存在时,将 keyName 改名为 newName

三、String

  1. set / get / del:设置、获取、删除
  2. append keyName value:如果 keyName 存在且是一个字符串,则将 value 连接到后面
  3. strlen keyName:返回 keyName 字符串的长度
  4. incr / decr keyName:当 keyName 是数字时,值增加 / 减小 1
  5. incrby / decrby keyName step:当 keyName 是数字时,值增加 / 减小 step
  6. getrange keyName start end:获取指定闭区间 start 到 end 范围内的值,0 到 -1 表示获取全部
  7. setrange keyName start value:设置从 start 开始(包含 start)后的值变为 value,若 value 的长度不足 start 后边的,则只改部分,若超过 start 后边的,则延长
  8. setex keyName 秒:(set with expire)在创建 keyName 时就设置过期时间
  9. setnx keyName value:(set if not exist):当 keyName 不存在时才可以设置值,即防止覆盖以前的值
  10. mset k1 v1 [k2 v2 k3 v3…]:一次给多个 key 赋值
  11. mget k1 [k2 k3 k4…]:一次获取多个 key
  12. msetnx k1 v1 [k2 v2 k3 v3…]:只要有一个存在,即所有的都创建不成功
  13. getset keyName value:即 get keyName;set keyName value;若 keyName 一开始不存在,则获取到的是 null,然后创建并赋值;若 keyName 存在,则获取本来的值,再设置为新值

四、List

  1. lpush listName v1 [v2 v3 v4…]:创建 listName / 在 listName 左端插入,元素顺序为 …v4 v3 v2 v1
  2. rpush listName v1 [v2 v3 v4…]:创建 listName / 在 listName 右端插入,元素顺序为 v1 v2 v3 v4…
  3. lrange listName start end:同 String 的 getrange
  4. lpop / rpop listName:将 listName 左端 / 右端(首 / 尾)的那个元素移除
  5. lindex listName index:获取 listName[index] 的元素,元素下角标从 0 开始
  6. llen listName:获取 listName 的长度
  7. lrem listName n m:删除 n 个 m,n 为数字,m 为值,如果 n 大于 m 的个数,则将 m 都删除,如果 n 小于 m 的个数,则只删除前 n 个 m
  8. ltrim listName start end:截取指定闭区间 start 到 end 范围的值后再赋给 listName
  9. rpoplpush list1 list2:将 list1 的右端(尾)的值移动到 list2 的左端(首)
  10. lset listName index value:将 listName[index] 的值设置为 value
  11. linsert listName before / after v1 v2:在 v1 之前 / 之后插入 v2

五、Set

  1. sadd setName v1 [v2 v3 v4…]:创建 setName 并赋值 / 在最后添加值,如果 v1 v2 v3 v4…中有重复的,则只添加一个,多余的忽略
  2. smembers setName:查看 setName 的值
  3. sismember setName value:查看 setName 中是否有 value
  4. scard setName:获取 setName 中元素的个数
  5. srem setName value:删除 setName 中的 value
  6. srandmember setName number:从 setName 中随机选出 number 个元素
  7. spop setName:从 setName 中随机移除一个,即随机出栈
  8. smove set1 set2 value:将 set1 中的 value 移动到 set2 中
  9. sdiff set1 set2:求出在 set1 内但不在 set2 内的元素
  10. sinter set1 set2:求 set1 与 set2 的交集
  11. sunion set1 set2:求 set1 与 set2 的并集

六、Hash

  1. hset key field value:创建 key 并赋值 / 在 key 中添加键值对 field, value
  2. hget key field:获取 key 中 field 对应的值
  3. hmset key field1 value1 [field2 value2…]:在 key 中添加多个键值对
  4. hmget key field1 [field2…]:获取多个 field 对应的值
  5. hgetall key:获取 key 的所有键值对,键和值都有
  6. hdel key field1 [field2…]:删除 key 中 field1 [field2…] 对应的值
  7. hlen key:获取 key 中键值对的个数
  8. hexists key field:判断 key 中有没有 field 的键值对
  9. hkeys / hvals key:获取 key 中的所有的键 / 所有的值
  10. hincrby key field number:将 key 中 field 对应的整数值增加 number
  11. hincrbyfloat key field float:将 key 中 field 对应的浮点数值增加 float
  12. hsetnx key field value:当 key 中 field 不存在时,添加键值对 field, value

七、Zset

  1. 在 Set 基础上,加上一个 score 值,之前 Set 是 k1 v1 v2 v3...,现在 Zset 是 k1 score1 v1 score2 v2 score3 v3…
  2. zadd zsetName score1 v1 [score2 v2 …]:创建 zsetName 并赋值 / 添加一些值
  3. zrang zsetName start end [withscores]:获取出 start 到 end 范围内的值,0 -1 取全部,加 withscores 连同 score 一起获取出来
  4. zrangebyscore zsetName startscore endscore:在 zsetName 中获取闭区间 startscore 到 endscore 范围的值
    (1) zrangebyscore zsetName startscore endscore withscores:连同 score 一起获取出来
    (2) zrangebyscore zsetName (startscore (endscore:区间 startscore 到 endscore 是开区间
    (3) zrangebyscore zsetName startscore endscore limit index step:从获取到的 startscore 到 endscore 范围内的值中再从下角标为 index 开始取 step 个值
  5. zrem zsetName value:删除 zsetName 中 value 值
  6. zcard zsetName:获取 zsetName 的元素的个数,不算 score
  7. zcount zsetName startscore endscore:获取该闭区间的值的个数
  8. zrank zsetName value:获取 value 所在的下角标值
  9. zscore zsetName value:获取 value 对应的分数
  10. zrevrank zsetName value:获取逆序 value 所在的下角标值
  11. zrerange zsetName start end [withscores]:获取出逆序 start 到 end 范围内的值,0 -1 取全部,加 withscores 连同 score 一起获取出来
  12. zrevrangebyscore zsetName endscore startscore:同 4 ,只不过分数范围是从大到小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值