Redis键值数据类型及基本操作
到⽬前为⽌,Redis ⽀持的键值数据类型如下:
字符串(String)
哈希(Map)
列表(list)
集合(sets)
有序集合(sorted sets)
1. String 字符串类型
string是redis最基本的类型,⼀个key对应⼀个value。
string类型是⼆进制安全的。意思是redis的string可以包含任何数据。⽐如jpg图⽚或者序列化的对象。
string类型是Redis最基本的数据类型,⼀个键最⼤能存储512MB。
String 命令:
赋值与取值 set key value / get key
>set name zhangzhi
ok
>get name
"zhangzhi"
当字符串值为整数时,incr命令可递增键值
>set a 1
ok
>incr a
(integer) 2
键不存在时,默认键值为0
>incr b
(integer) 1
Incrby 和incr类似,但是可指定⼀次增加的值
>incrby c 10
(integer) 10
decr 和decrby 减少整数,incrbyfloat增加指定的浮点数,append向尾部追加值,如果键不存在则值为指定value >set d hello
ok
>append d world
redis支持的五种数据类型(integer) 10 # append 命令返还字符串长度 “helloworld” 长度为10
strlen key 获取字符串长度
>strlen d
(integer) 10
同时获取(mget)/设置(mget)多个键值
>mset a valuea b valueb
>mget a b
2. Hashes 哈希
哈希的键值也是⼀种字典结构,其存储了字段和字段值的映射,特别社和存储对象。但字段值只能是字符串,散列类型不能嵌套其他的数据类型。
例⼦:
>hset user:1 name zhang    #赋值
>hget user:1 name                #取值
>hmset user:1 name zhangzhi age 29 address beijng #赋多值
>hmget user:1 name age #根据keys获取多个值
>hgetall user:1  #获取全部值
>hexists user:1 address #判断字段是否存在
>hsetnx user:1 address Beijing # 当字段不存在时赋值
>hdel user:1 age  #删除字段
>hincrby user:1 age 1 # 增加数字,类似incrby ,散列没有incr
>hkeys user:1 #获取字段名
>hvals user:1  #获取字段值
>hlen user:1 # 获取字段数量
3. 列表(Lists)
Redis列表是简单的字符串列表,按照插⼊顺序排序。你可以添加⼀个元素到列表的头部(左边)或者尾部(右边)。
LPUSH命令插⼊⼀个新元素到列表头部,⽽RPUSH命令插⼊⼀个新元素到列表的尾部。当对⼀个空key执⾏其中某个命令时,将会创建⼀个新表。列表最多可存储 2的32次⽅ – 1个元素 (4294967295, 每个列表可存储40多亿)。
例⼦:
>lpush list:1 a #创建列表list:1 并插⼊a
>rpush list:1 b #右边插⼊b
>lrange list:1 0 10 # 获取list:1 索引从0到10的元
>lpop list:1 #左边弹出元素
>rpop list:1 #右边弹出元素
>llen list:1 # 列表中元素的个数
>lrem list:1 2 a #删除列表中指定的值 2为数量
>linde list:1 0 # 获得指定索引的元素值
>lset list:1 0 2 #设置指定索引的元素值
>ltrim list1 2 4 #删除指定索引范围之外的所有元素
>linsert list1 before 4 99      #Linsert 命令⽤于在列表的元素前或者后插⼊元素。当指定元素不存在于列表中时,不执⾏任何操作。当列表不存在时,被视为空列表,不执⾏任何操作。如果 key 不是列表类型,返回⼀个错误。
>rpoplpush list1 list2          #rpoplpush 命令⽤于移除列表的最后⼀个元素,并将该元素添加到另⼀个列表并返回。
4. Set(集合)
Set是string类型的⽆序集合。集合是通过哈希表实现的,所以添加,删除,查的复杂度都是O(1)。
例⼦:
>sadd set:1 1 2 #已经存在集合中的元素忽略
>srem set:1 2 3
>smembers set:1
>sismember set:1 4 #判断元素是否在集合中
>sdiff set:1 set:2 #集合间差集
>sinter set:1 set:2 # 集合交集
>sunion set:1 set:2 # 集合并集
5. 有序集合(Sorted sets)
Redis有序集合和Redis集合类似,它们的差别是,每个有序集合的成员都关联着⼀个评分,这个评分⽤于把有序集合中的成员按最低分到最⾼分排列。
例⼦:
>zadd zset:1 0 redis
>zadd zset:1 1 monogdb
>zadd zset:1 2 mysql
>zrangebyscore zset:1 0 1000
>zscore zset:1 mysql #获取元素分数
>zrange zset:1 0 -1 withscores

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。