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

子串:从startend

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

1key的数字值加1

INCRBY key increment

加值key的数字值加给定值

DECR key

1key的数字值减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

范围内元素:从startend

LTRIM key start end

修剪:只保留 [ start,end]内的元素

LREM key count value

移除countvalue,从头部开始

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

移动membersrcdes

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个成员的排序方式是:

  1. 先按分数(SCORE)排序;
  2. 相同分数,按字典顺序排序。

正常情况下(索引、分数、字典都顺序)存储的结构(仅仅是说明,真实存储结构可能不是这样!):

一些命令的作用区间:



有序集合基本命令

描述

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

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果4s充不进电怎么办 苹果4sbi锁怎么办 乐视pro3充电慢怎么办 手机屏幕触碰不灵敏怎么办 手机换屏幕失灵怎么办 手机图标有重影怎么办 苹果屏幕太灵敏怎么办 5s触摸不灵敏怎么办 导航触屏失灵怎么办 汽车导航触摸屏失灵怎么办 爱丽舍导航仪触屏失灵怎么办 手机要开机很久怎么办 小米手机屏失灵怎么办 5s手机屏幕松动怎么办 手机按钮不灵了怎么办 手机触摸屏不灵了怎么办 mac触摸板失灵怎么办 苹果屏幕触摸失灵怎么办 三星手机屏幕没反应怎么办 手机开机定屏怎么办 手机触摸局部失灵怎么办 苹果手机屏幕按键失灵怎么办 5s锁屏键坏了怎么办 平板版本太低怎么办 手机屏局部失灵怎么办 iphone8触屏不灵敏怎么办 苹果机8屏幕失灵怎么办 车钥匙丢车上怎么办 指纹锁华盖坏了怎么办 非法入了户口怎么办 司考成绩单丢了怎么办 小饭桌转让手续怎么办 两个领导不和你怎么办 两个领导意见不一致怎么办 两个领导对立我怎么办 投诉申通没用怎么办 领导作风有问题怎么办 做完火疗受风了难受怎么办 鼻子做的不好看怎么办 埋线双眼皮出血怎么办 割完双眼皮出血怎么办