Redis入门指南之数据类型
2017-06-19 22:11
393 查看
字符串类型
一个字符串类型键允许存储的最大容量512MB
1.赋值与取值
127.0.0.1:6379> set name yinnana OK 127.0.0.1:6379> get name "yinnana"
2.递增/递减数字
127.0.0.1:6379> incr num (integer) 1 127.0.0.1:6379> incr num (integer) 2 127.0.0.1:6379> incrby num 5 (integer) 7 127.0.0.1:6379> decr num (integer) 6 127.0.0.1:6379> decrby num 2 (integer) 4 127.0.0.1:6379> incrbyfloat num 2.3 "6.3"
3.向尾部追加值
127.0.0.1:6379> append name " haha" (integer) 12 127.0.0.1:6379> get name "yinnana haha"
4.获取字符串长度
127.0.0.1:6379> strlen name (integer) 12
5.同时获得/设置多个键值
127.0.0.1:6379> mset city beijing sex male age 12 OK 127.0.0.1:6379> mget city sex age 1) "beijing" 2) "male" 3) "12"
6.位操作
GETBIT key offset
SETBIT key offset value
BITCOUNT key [start][end]
BITTOP operation destkey key[key...]
redis 键命名 对象类型:对象ID:对象属性
散列
redis的其他数据类型,不支持数据类型嵌套。比如集合类型的每个元素都只能是字符串,不能是另个集合或者散列表。
散列类型适合存储对象:使用对象类别+ID构建键名,字段表示对象属性,而字段值则存储属性值。
127.0.0.1:6379> hset person hair black ## HSET key field value 单个设置键值对 (integer) 1 127.0.0.1:6379> hset person face white (integer) 1 127.0.0.1:6379> hmset person hand long leg short ## HSET key field value field value 多个设置键值对 OK 127.0.0.1:6379> hget person hand ## HGET key field 单个键获取 "long" 127.0.0.1:6379> hmget person hair face leg ## HMGET key field [field ...]多个键获取 1) "black" 2) "white" 3) "short" 127.0.0.1:6379> hgetall person ##获取键中所有字段和字段值 1) "hair" 2) "black" 3) "face" 4) "white" 5) "hand" 6) "long" 7) "leg" 8) "short" 127.0.0.1:6379> hexists person leg ##判断字段是否存在 存在返回1,不存在返回0 (integer) 1 127.0.0.1:6379> hsetnx person leg fat ##若字段不存在则赋值;若字段存在则不执行操作 (integer) 0 127.0.0.1:6379> hset person price "100" (integer) 1 127.0.0.1:6379> hincrby person price 2 (integer) 102 127.0.0.1:6379> hdel person price ##删除某键 (integer) 1 127.0.0.1:6379> hkeys person ##只获取字段名们 1) "hair" 2) "face" 3) "hand" 4) "leg" 127.0.0.1:6379> hvals person ##只获取字段值们 1) "black" 2) "white" 3) "long" 4) "short" 127.0.0.1:6379> hlen person ##获取字段数量 (integer) 4
列表
内部使用双向链表实现的。借助列表类型,redis可以作为队列使用。向列表两端增加元素,返回值表示增加元素后 列表的长度。
LPUSH key value [value...]
RPUSH key value [value...]
从列表两端弹出元素
LPOP key
RPOP key
LPOP命令执行分为两步操作:
第一步将列表左边的元素从列表中移除,第二步返回被移除的元素值。
获取列表中元素的个数
LLEN key 键不存在时返回0
获得列表片段
LRANGE key start stop
LRANGE命令在取得列表片段的同时不会像LPOP一样删除该片段,
跟开发语言中方在于法slice很像,区别在于LRANGE返回的值包含最右边元素
LRANGE支持负索引,表示从右边开始计算序数
例如,LRANGE number 0 -1
可以获取列表中所有的元素
注意,如果start>stop,返回空列表。
如果stop>实际索引范围,则会返回到列表最右边的元素
删除列表中指定的值
LREM key count value 删除列表中前count个值为value的元素
count>0 从左边删
count<0 从右边删
count=0 删除所有值为value的元素
获得/设置指定索引的元素值
LINDEX key index
LSET key index value
只保留列表指定片段
LTRIM key start end
删除指定索引范围之外的所有元素
向列表中插入新元素
LINSERT key BEFORE|AFTER privot value
首先会在列表中从左到右查找值为privot的元素,然后将value插入其前面/后面
将元素从一个列表转到另一个列表
RPOPLPUSH source destination
***********************************************************
集合类型
区别列表类型,集合类型无序性、唯一性集合类型在redis内部是使用值为空的散列表(hash table).
常用操作是向集合中加入或删除元素、判断某个元素是否存在。
多个集合类型键之间还可以进行并集、交集和差集运算。
增加/删除元素
SADD key member [member ....]
SREM key member [member
....]
获取集合中的所有元素
SMEMBERS key
判断元素是否存在在集合中
SISMEMBER key member
集合间运算
SDIFF key [key ,,] 差集
SINTER key [key ,,] 交集
SUNION key [key ,,] 并集
获得集合中元素个数
SCARD key
进行集合运算并将结果存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key
...]
SUNIONSTORE destination key [key
...]
随机获得集合中的元素
SRANDMEMBER key [count] 可随机获得多个元素
count>0 不重复
count<0 可能相同
从集合中弹出一个元素
SPOP key
*****************************
有序集合类型(Sorted Set)
在集合类型的基础上,有序集合类型为集合中的每个元素都关联了一个分数,不仅可以插入、删除、判断元素是否存在等集合类型的操作,还能获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等操作。
有序集合类型与列表类型
相似处:都是有序的、都可以获得一定范围的元素
区别:
1.列表类型通过链表实现的,获取靠近两端的数据速度极快,访问中间数据速度慢;有序集合类型是使用散列表和跳跃表(Skip list)实现的,即便读取中间部分数据也极快。
2.列表类型不能简单的调整某个元素的位置,但是有序集合可以(通过改变这个元素的分数)
3.有列表序集合比列表类型更耗费内存
命令
增加元素
ZADD key score member [score member...]
若该元素已经存在,则会用新的分数替换原有的分数
获得元素的分数
ZSCORE key member
获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANGE 按照元素分数从小到大的顺序返回索引从 start到stop之间的所有元素(包含两端的元素),如果需要同时获得元素的分数的话可以加上参数WITHSCORES。如果两个元素的分数相同,redis会按照字典顺序进行排列。
获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]
按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素。如果希望分数范围不包含端点值,可以在分数前加上"("。-inf
+inf 表示负无穷 正无穷。LIMIT offset count在获得的元素列表的基础上向后偏移offset个元素,并且只获取前count个元素。
增加某个元素的分数
ZINCRBY
key increment member
获得集合中元素的数量
ZCARD key
获得指定分数范围内的元素个数
ZCOUNT key min max
删除一个或多个元素
ZREM key member [member ...]
按照排名范围删除元素
ZREMRANGEBYRANK key start stop
按照分数范围删除元素
ZREMRANGEBYSCORE key min max
获得元素的排名
ZRANK key member
ZREVRANK key member
计算有序集合的交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]][AGGREGATE SUN|MIN|MAX]
相关文章推荐
- redis入门——redis的数据类型
- Redis入门教程:特性及数据类型的操作
- Redis入门教程:特性及数据类型的操作
- redis入门——redis的数据类型
- Redis入门和数据类型
- Redis入门与数据类型介绍
- 一天入门redis-安装连接、基本数据类型
- Redis入门教程:特性及数据类型的操作
- Redis 入门之 数据类型
- Redis入门到精通-Redis数据类型
- Redis入门之五大数据类型及常用操作
- Redis入门-技术数据类型常用操作
- redis快速入门-数据类型
- Redis入门教程:特性及数据类型的操作
- Redis从入门到放弃 之 常用命令和基本数据类型操作
- redis入门——redis的数据类型
- 4、Redis从入门到放弃 之 常用命令和基本数据类型操作
- redis简单运用,数据类型,适合入门
- [Redis]Redis指南一 数据类型
- redis入门指南一书总结上(windows下安装+redis数据类型汇总)