您的位置:首页 > 数据库 > Redis

Redis学习笔记(三)五大数据类型

2020-03-06 13:41 886 查看

一.五大数据类型简介

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Set(集合)
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。

二.哪里去获取redis常见数据类型操作命令

http://redisdoc.com/

三.五大数据类型相关命令

1.Redis_key

命令 解释
keys * 列出所有key
exists key的名字 判断某个key是否存在,返回值1存在,返回值0不存在
move key db 当前库就没有了,被移除到另一个库
del key 删除
expire key 秒钟 为给定的key设置过期时间
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
type key 查看key是什么类型

2.字符串(String)

命令 解释
APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
STRLEN key 返回 key 所储存的字符串值的长度。
INCR key 将 key 中储存的数字值增一。
DECR key 将 key 中储存的数字值减一。
INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。
DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。
GETRANGE key start end 返回 key 中字符串值的子字符
SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
SETNX key value 只有在 key 不存在时设置 key 的值。可以防覆盖
MSET key value [key value …] 同时设置一个或多个 key-value 对。
MGET key key… 同时获取多个value

3.列表(List)

命令 解释
LPUSH key value1 [value2] 将一个或多个值插入到列表头部
RPUSH key value1 [value2] 在列表中添加一个或多个值
LRANGE key value1 value2 将列表第value1到value2列出来,如LRANGE list1 0 -1 从第零个元素到最后都列出来
LPOP key 移出并获取列表的第一个元素
RPOP key 移除列表的最后一个元素,返回值为移除的元素。
LINDEX key index 通过索引获取列表中的元素
LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
LLEN key 获取列表长度
RPOPLPUSH key1 key2 将key1列表中的最后一位移到key2列表的头
LSET key index value 通过索引设置列表元素的值

它是一个字符串链表,left,right都可以添加
如果键不存在,创建新的链表
如果键已存在,新增内容
如果值全部移除,对应的键也就消失了
链表的头和尾操作效率都是极高的,但是在中间就不行了

4.集合(set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令 解释
SADD key member1 [member2] 向集合添加一个或多个成员
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
SMEMBERS key 返回集合中的所有成员
SCARD key 获取集合的成员数
SREM key member1 [member2] 移除集合中一个或多个成员
SPOP key 移除并返回集合中的一个随机元素
SMOVE key1 key2 key1中的值 将元素从key1集合移动到key2集合
SDIFF key1 key2 差集
SINTER key1 key2 交集
SUNION key1 key2 并集

5.哈希(hash)

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
KV模式不变,但V是一个键值对

命令 解释
HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。如HSET user id 11
HGET key field 获取存储在哈希表中指定字段的值。如HGET user id
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。如HMSET customer id 02 age 16 name zhangshan
HMGET key field1 [field2] 获取所有给定字段的值
HGETALL key 获取在哈希表中指定 key 的所有字段和值
HDEL key field1 [field2] 删除一个或多个哈希表字段
HLEN key 获取哈希表中字段的数量
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
HKEYS key 获取所有哈希表中的字段
HVALS key 获取哈希表中所有值
HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。

6.有序集合zset

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令 解释
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key 获取有序集合的成员数
ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
ZREM key member [member …] 移除有序集合中的一个或多个成员
ZSCORE key member 返回有序集中,成员的分数值
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
  • 点赞
  • 收藏
  • 分享
  • 文章举报
小熊奶黄包 发布了20 篇原创文章 · 获赞 0 · 访问量 152 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: