Redis 学习笔记(二):数据类型与相关命令
来源:互联网 发布:div height javascript 编辑:程序博客网 时间:2024/05/29 18:11
Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(有序集合)。
a. 字符串(string)
字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:
字符串基本命令
描述
SET key value
设置K-V
GET key
获取键值
MSET key value [key value..]
设置多个K-V对
MGET key1 [key2..]
获取多个键值
STRLEN key
字符串值长度
GETRANGE key start end
子串:从start到end
SETNX key value
设置K-V:仅key不存在时
MSETNX key value [key value..]
设置多个K-V对:仅所有给定key不存在时
SETRANGE key offset value
覆盖:用value覆盖从offset开始的字符串值
GETSET key value
设置返回:key的值设为value,返回原来的值
SETEX key seconds value
设置K-V和过期时间
INCR key
加1:key的数字值加1
INCRBY key increment
加值:key的数字值加给定值
DECR key
减1:key的数字值减1
DECRBY key decrement
减值:key的数字值减给定值
APPEND key value
追加:如果key存在且值是字符串,追加到末尾
GETBIT key offset
获取位:offset上的值
SETBIT key offset value
设置位:offset处设为value
使用例子:
b. 哈希表(hash)
hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
哈希表基本命令
描述
HSET key field value
设置表中field-value
HGET key field
获取字段field的值
HMSET key field1 value1 [field2 value2..]
设置多个field-value对
HMGET key field1 [field2..]
获取多个field的值
HKEYS key
获取所有字段
HVALS key
获取所有值
HGETALL key
获取所有field-value
HLEN key
字段数
HEXISTS key field
字符是否存在
HDEL key field1 [field2..]
删除多个字段
HSETNX key field value
设置field-value:仅field不存在时
HINCRBY key field increment
加上增量:field字段的数值加increment
HSCAN key cur [MATCH pattern] [COUNT count]
迭代表中field-value对
使用例子:
c. 列表(list)
列表是简单的字符串列表,按照插入顺序排序。
列表基本命令
描述
LPUSH key value
插入:一个或多个元素到头部
RPUSH key value [key value..]
插入:一个或多个元素到尾部
LPOP key
移出并获取:第一个元素
RPOP key1
移出并获取:最后一个元素
BLPOP key1 [key2] timeout
移除并获取:第一个元素,如果没有阻塞到超时
BRPOP key1 [key2] timeout
移除并获取:最后一个元素,如果没有阻塞到超时
LLEN key
列表长度
LRANGE key start end
范围内元素:从start到end
LTRIM key start end
修剪:只保留 [ start,end]内的元素
LREM key count value
移除:count个value,从头部开始
LPUSHX key value
插入:到已存在列表的头部
RPUSHX key value
插入:到已存在列表的尾部
RPOPLPUSH key src des
移出并插入:src最后一个元素,添加到des
BRPOPLPUSH key src des timeout
从src弹出一个元素,插入到des中并返回,如果没有阻塞到超时
LINSERT key BEFORE|AFTER prvot value
在元素前或后插入元素
使用例子:
d. 集合(set)
Set 是 string 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据。
集合是通过哈希表实现的,添加、删除、查找的复杂度都是 O(1)。
集合基本命令
描述
SADD key mem1 [mem2..]
添加:一个或多个成员到集合
SREM key member1 [member2]
移出:一个或多个成员
SISMEMBER key merber
是否为成员:判断member是否在集合中
SMEMBERS key
返回所有成员
SCARD key
所有成员个数
SMOVE src des member
移动:member从src到des
SDIFF key1 [key2]
差集:给定所有集合的
SDIFFSTORE des key1 [key2]
存储差集:给定集合的差集存储到des
SINTER key1 [key2]
交集:给定集合的
SINTERSTORE des key1 [key2]
存储交集:到des
SUNION key1 [key2]
并集:给定集合的
SUNIONSTORE des key1 [key2]
存储并集:给定集合并集存储到des
SPOP key
移出返回一个随机元素
SRANDMEMBER key [count]
返回一个或多个随机元素
SSCAN cur [MATCH pattern] [COUNT count]
循环集合元素
使用例子:
e. 有序集合(sorted set)
有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是:每个元素都会关联一个 double 类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员唯一,但分数(score)却可以重复。集合是通过哈希表实现的,添加,删除,查找的复杂度都是O(1)。
有序集合有些命令不太好理解,所以先说明一下基本的结构。
假设执行下面的命令:
ZADD ss 80 "bc" 90 "ab" 100 "aa" 80 "bac"
4个成员加入集合中,score为80的有两个成员,90和100各一个成员。
这4个成员的排序方式是:
- 先按分数(SCORE)排序;
- 相同分数,按字典顺序排序。
正常情况下(索引、分数、字典都顺序)存储的结构(仅仅是说明,真实存储结构可能不是这样!):
一些命令的作用区间:
有序集合基本命令
描述
ZADD key score1 member1
[score2 member2]
添加:一个或多个成员到集合
SREM key member1 [member2]
移出:一个或多个成员
ZCARD key
所有成员个数
ZRANGE key start end
索引区间成员
ZREVRANGE key start end
逆序索引区间成员
ZRANGEBYSCORE key min max
分数区间成员
ZREVRANGEBYSCORE key max min
逆序分数区间成员:分数从高到低
ZRANGEBYLEX key min max
字典区间成员
ZSCORE key member
分数值:指定成员
ZRANK key member
索引值:按分数递增排序
ZREVRANK key member
逆序索引值,按分数递减排序
ZCOUNT key min max
分数区间成员数
ZLEXCOUNT key min max
字典区间成员数
ZREMRANGEBYLEX key min max
移出:字典区间成员
ZREMRANGEBYRANK key min max
移出:索引区间成员
ZREMRANGEBYSCORE key min max
移出:分数区间成员
ZINCRBY key increment member
加上增量:指定成员的分数
ZINTERSTORE des numkeys key [key]
存储交集:到新的有序集合
ZSCANkey cur [MATCH pattern]
[COUNT count]
迭代
使用例子:其他一些使用:
参考文献:http://www.runoob.com/redis/redis-partitioning.html
- Redis 学习笔记(二):数据类型与相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记(二)--数据类型
- redis学习笔记二(redis的数据类型)
- 二 redis学习笔记之数据类型
- redis学习笔记二之数据类型
- redis学习笔记二之数据类型
- 二 redis学习笔记之数据类型
- Redis学习笔记二、String数据类型
- Redis数据类型及相关命令(3)
- Redis学习笔记 (四) 之KEY相关命令
- Redis学习笔记(八)事务 和 连接相关命令
- Redis学习笔记 (四) 之KEY相关命令
- Redis学习笔记(八)事务 和 连接相关命令
- Redis学习笔记(2)-Redis数据类型
- 【C++】【入门学习】理解复杂的数组声明
- (一)简单工厂模式
- ACM基础题:素数求和问题
- 基于ZooKeeper的服务注册中心
- android 判断网络是否可用
- Redis 学习笔记(二):数据类型与相关命令
- 一、环境搭建
- nginx讲解之request_time 和upstream_response_time差别
- 一种肯定能提高开发者编程能力的方法(转)
- 网易微专业 前端工程师 学习笔记
- android自定义(无埋点)收集用户行为统计 (非常方便 可以自己拓展)
- 全局侧滑返回__iOS
- Cannot change version of project facet Dynamic web module to 2.5(或3.0)
- RobotFramework+Selenium2Library批处理自动安装说明