Redis学习笔记(二)--数据类型
来源:互联网 发布:软件测试报告缺陷总结 编辑:程序博客网 时间:2024/05/22 08:17
Redis学习笔记(二)–数据类型
一、常用命令
1、获得符合规则的键名列表
KEYS pattern
pattern支持glob风格通配符格式
备注:keys命令需要遍历redis中的所有键,当键的数量较多时会影响性能,不建议生产环境中使用。redis是不区分命令大小写的。
2、判断一个键是否存在
EXISTS key
如果键存在则返回整数类型1,否则返回0。
3、删除键
DEL key[key1……]
可以删除一个或多个键,返回值是删除的键的个数。
备注:del命令的参数不支持通配符,另外del命令支持多个键作为参数,所以还可以执行redis-cil del ‘redis-cil keys “user:”’来打到同样的效果,但是性能更好。*
4、获得键值的数据类型
TYPE key
type命令用来获得键值的数据类型,返回值包括:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。
二、字符串类型
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。一个字符串类型键允许存储的数据的最大容量是512MB。
1、赋值与取值
SET key value
GET key
当键不存在的时候会返回空结果。
2、递增数字
INCR key
其作用是让当前键值递增,并返回递增后的值,
3、增加指定的整数
INCRBY key increment
INCRBY命令和INCR命令基本一样,只不过前者可以通过increment参数指定一次增加的数值。
4、减少指定的整数
DECR key
DECRBY key decrement
DECR命令和INCR命令用法相同,只不过是让键值递减。
DECRBY命令和INCRBY命令用法相同,只不过前者可以通过decrement参数指定一次减小的数值。
5、增加指定浮点数
INCRBYFLOAT key increment
6、向尾部追加值
APPEND key value
APPEND作用是向键值的末尾追加value。如果键不存在则将该键值设置为value,即相当于set key value。返回值是追加后字符串的总长度。
7、获取字符串长度
STRLEN key
STRLEN命令返回键值的长度,如果键不存在则返回0。
8、同时获得、设置多个键值
MGET key [key……]
MSET key [key……]
9、位操作
GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end]
BITOP operation destkey key [key ……]
三、散列类型
1、赋值与取值
HSET KEY FIELD VALUE
HGET KEY FIELD
HMSET KEY FIELD VALUE [FIELD VALUE]
HMGET KEY FIELD [FIELD]
HGETALL KEY
HSET命令的方便在于不区分插入和更新操作,这就意味着修改数据时不用事先判断字段是否存在来决定要执行的是插入操作还是更新操作。当执行的是插入操作时HSET命令会返回1,当执行的是更新操作时HSET命令返回0。进一步讲,当键本身不存在时,HSET命令还会自动建立它。
2、判断字段是否存在
HEXISTS KEY FIELD
HEXISTS 命令用来判断一个字段是否存在。如果存在则返回1,不存在返回0。
3、当字段不存在时赋值
HSETNX KEY FIELD VALUE
HSETNX 命令和HSET命令类似,区别在于如果字段已经存在,HSETNX 命令将不执行任何操作。只不过HSETNX 命令是原子操作,不用担心竞态条件。
4、增加数字
HINCRBY KEY FIELD INCREMENT
备注:散列类型没有HINCR命令
5、删除字段
HDEL KEY FIELD [FIELD……]
6、只获取字段名或字段值
HKEYS KEY
KVALS KEY
7、获得字段数量
HLEN KEY
四、列表类型
列表类型(list)可以存储在一个有序的字符串列表,内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度就越快,不过使用链表的代价是通过索引访问元素比较慢。
1、向列表两端添加元素
LPUSH KEY VALUE [VALUE……]
RPUSH KEY VALUE [VALUE……]
LPUSH命令用来向列表左边增加元素,返回值表示增加元素后列表的长度。
2、从列表两端弹出元素
LPOP KEY
RPOP KEY
该命令执行两步操作,第一部是将列表左边的元素从列表中删除,第二步是返回被移除的元素值。
3、 获取列表中元素的个数
LLEN KEY
当键不存在的时候返回0。
4、获得列表片段
LRANGE KEY START STOP
该命令将返回索引从start到stop之间的所有元素(包含着两端的元素),redis的列表起始索引为0。
5、删除列表中指定的值
LREM KEY COUNT VALUE
该命令会删除列表中前count个值为value的元素,返回值是实际删除的元素个数,根据count值的不同,LREN命令的执行方式会有所不同。
(1)当count>0时,LREM命令会从列表左边开始删除前count个值为value的元素。
(2)当count<0时,LREM命令会从列表右边开始删除前|count|个值为value的元素。
(3)当count=0时,LREM命令会删除所有值为value的元素。
6、获得、设置指定索引的元素值
LINDEX KEY INDEX
LSET KEY INDEX VALUE
如果将列表类型当做数组来用,LINDEX命令是必不可少的,LINDEX命令用来返回指定索引的元素,索引从0开始。如果index是负数则表示从右边开始计算索引,最右边元素的索引是-1。LSET是另一个通过索引操作的命令,它会将索引为index的元素赋值为value。
7、只保留列表指定片段
LTRIM KEY START END
该命令可以删除指定索引范围之外的所有元素,指定方法同LRANGE。
8、向列表中插入元素
LINSERT KEY BEFORE|AFTER PIVOT VALUE
该命令首先会在列表中从做到右查找值为pivot的元素,然后根据第二个参数决定插入到该元素的前面还是后面。
9、将元素从一个列表转到另一个列表
RPOPLPUSH SOURCE DESTINATION
执行过程:先执行RPOP命令再执行LPUSH命令。RPOPLPUSH 命令从SOURCE列表类型键的右边弹出一个元素,然后将其加入到DESTINATION
五、集合类型
集合类型和列表有相似之处,但很容易将它们区分的。
1、增加、删除元素
SADD KEY MEMBER [MEMBER …]
SREM KEY MEMBER [MEMBER…]
2、获得集合中的所有元素
SMEMBERS KEY
3、判断元素是否在集合中
SISMEMBER KEY MEMBER
判断一个元素是否在集合中是一个时间时间复杂度为O(1)的操作。当值存在的时候返回1,不存在返回0。
4、集合间运算
SDIFF KEY [KEY …]
SINTER KEY [KEY…]
SUNION KEY [KEY…]
(1)SDIFF 命令是用来对多个集合执行差集运算。
(2)SINTER 命令用来对多个集合执行交集运算。
(3)SUNION 命令用来对多个集合执行并集运算。
5、获得集合中元素个数
SCARD KEY
6、进行集合运算并将结果存储
SDIFFSTORE DESTINATION KEY [KEY…]
该命令和sdiff命令功能一样,唯一的区别就是该命令不会直接返回运算结果,而是将结果存储在destination键中。该命令常用于进行多步集合运算的场景中。
7、随机获得集合中的元素
SRANDMEMBER KEY [COUNT]
(1)当count为正数时,该命令会随机从集合里获得count个不重复的元素,如果count大于集合中的元素个数,则返回集合中的全部元素。
(2)当count为负数时,该命令会随机从集合里获得|count|个元素,可能相同。
8、从集合中弹出一个元素
SPOP KEY
该命令会从集合中随机选择一个元素弹出。
六、有序集合类型
有序集合类型与列表类型相似,但是也存在很大的区别。
- 二者都是有序的。
- 二者都可以获得某一范围的元素
- 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当数据增多后,访问中间数据的数据会比较慢。
- 有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间部分的数据速度也很快,时间复杂度为O(log(N)).
- 列表中不能简单地调整某个元素的位置,但是有序集合可以。
- 有序集合要比列表类型更耗费内存。
1、增加元素
ZADD KEY SCORE MEMBER[SCORE MEMBER…]
2、获得元素的分数
ZSCORE KEY MEMBER
3、获得排名在某个范围的元素列表
ZRANGE KEY START STOP [WITHSCORES]
ZREVRANGE KEY START STOP [WITHSCORES]
4、获得指定分数范围的元素
ZRANGEBYSCORE KEY MIN MAX [WITHSCORES] [LIMIT OFFSET COUNT]
5、增加某个元素的分数
ZINCRBY KEY INCREMENT MEMBER
6、获得集合中元素的数量
ZCARD KEY
7、获得指定分数范围内的元素个数
ZCOUNT KEY MIN MAX
8、删除一个或多个元素
ZREM KEY MEMBER [MEMBER…]
9、按照排名范围删除元素
ZREMRANGEBURANK KEY START STOP
10、按照分数范围删除元素
ZREMRANGEBYSCORE KEY MIN MAX
11、获得元素的排名
ZRANK KEY MEMBER
ZREVRANK KEY MEMBER
12、计算有序集合的交集
ZINTERSTORE DESTINATION NUMKEYS KEY [KEY …] [WEIGHTS WEIGHT
[WEIGHT…]] [AGGREGATE SUM|MIN|MAX]
(1)当AGGREGATE是SUM(默认)时,DESTINATION键中的元素的分数是每个参与计算的集合中该元素分数的和。
(2)当AGGREGATE是MIN时,DESTINATION键中的元素的分数是每个参与计算的集合中该元素分数的最小值。
(2)当AGGREGATE是MAX时,DESTINATION键中的元素的分数是每个参与计算的集合中该元素分数的最大值。
- Redis学习笔记(二)--数据类型
- redis学习笔记二(redis的数据类型)
- Redis 学习笔记(二):数据类型与相关命令
- 二 redis学习笔记之数据类型
- redis学习笔记二之数据类型
- redis学习笔记二之数据类型
- 二 redis学习笔记之数据类型
- Redis学习笔记二、String数据类型
- Redis学习笔记(2)-Redis数据类型
- [Redis学习笔记]-Redis数据类型
- noSQL-redis学习(二)- 数据类型
- Redis学习笔记(二)-四种复合数据类型
- redis源码学习笔记(一)--数据类型
- redis学习笔记(二)
- Redis学习笔记(二)
- Redis学习笔记(二)
- Redis 学习笔记(二)
- redis学习笔记(二)
- LeetCode Binary Tree Paths
- hdu1073
- Java____HTTP协议详解(web client通过http与service通信)
- CameraLerp
- 脚本乐园 shell中getopts命令行参数处理
- Redis学习笔记(二)--数据类型
- 华为上机题:任意输入一个数是1到9做运算的结果,求有多少种可能性
- Spring Auto proxy creator example
- BC - Reflect(欧拉函数)
- Android之旅:梦想、学习、坚持、自信、淡定
- 变量的间接取值和拼接后的间接取值
- 排序I
- Exynos4412 Andriod4.4 源码编译生成SDK
- Comet:基于 HTTP 长连接的“服务器推”技术