填补下上篇小说集合的一声令下,如今 Redis 援助的数据类型(键值)澳门永利娱乐总站

增加补充下上篇小说集合的指令。 上篇地址
乐乎蜗牛 http://www.cnblogs.com/tdws/p/5785939.html 

《Redis 入门指南》(第②版)

SCA奥德赛D Key获得执行集合中成分的数量。

第一章

澳门永利娱乐总站 1

Redis 是什么

Redis (REmote Dictionary Server
远程字典服务器)是3个开源的、高质量的、基于键值对的缓存与存款和储蓄系统,通过提供多样键值数据类型来适应分化景色下的缓存与储存要求。同时
Redis 的居多高档功效使其得以胜任新闻队列,职务队列等不等的剧中人物。

SDIFFSTORE 目的键 keys …  将聚集做DIFF差集操作,并储存在对象键中。

特性

积存结构

Redis 它以字典结构存款和储蓄数据,并允许其余应用通过 TCP 协和式飞机读取字典中的内容

当前 Redis 协理的数据类型(键值):

  • 字符串类型
  • 散列类型
  • 列表类型
  • 聚集类型
  • 以不变应万变聚集类型

内部存款和储蓄器存款和储蓄与持久化

Redis 数据存款和储蓄在内部存款和储蓄器中。在一台一般的台式机电脑上,Redis
能够在一秒内读写超越 10 万个键值。

设若程序退出内部存款和储蓄器,数据会丢掉,可是 Redis
提供了对持久化的协助,能够将内部存款和储蓄器中的多少异步写入到硬盘中,同时不影响连续提供劳动。

功用丰盛

  • Redis 能够为各个键设置生活时间(TTL),这一妙不可言的性子让 Redis
    能够视作缓存系统来使用。
  • Redis 帮衬持久化和拉长的数据类型
  • Redis 列表类型键能够用来落到实处队列,并且补助阻塞式读取

PS: Redis 与 Memcached 质量上的区分, Redis 是单线程模型,而 Memcached
是四线程补助的,所以在多核服务器上后者的属性理论上针锋相对更高一些。而 Redis
在性质上也是12分高的,所以不要顾虑品质难点,而越多的去考虑功用难题。随着
Redis 3.0 的生产,标志着 Memcached 大约变成了 Redis 的子集。同时 Redis
对集群的扶助,也使得 Memcahced 原有的第②方集群众工作具不再成为优势。

作为缓存系统, Redis
还足以界定数量占用的最大内部存款和储蓄器空间,在多少达到空间限制后,能够依照一定的平整自动淘汰不须求的键。

除此以外同样有SINTEPRADOSTORE,SUNIONSTORE.对于集合还不理解的童鞋,请看上篇小说。

何以使用 Redis

  • Redis 提供了 100
    多少个指令,常用的唯有十九个,并且每种命令都很不难记念。
  • Redis 提供了几十种编制程序语言的客户端库。
  • Redis 是开源的

澳门永利娱乐总站 2

第二章

末段3个要介绍的一声令下正是SRANDMEMBE奥迪Q3Key。从指标键中取随机二个成分。他是很有趣的。

Redis 版本规则

Redis 规定次版本号(小数点后的数字)为偶数的版本是祥和版本(如 2.8
版本、3.0 版本),奇数为非稳定版,生产环境一般须要稳定版本

时下SetA中有10个要素,当您钦点的回来数量为正数,再次回到相应数额的妄动数,固然超越集合数量,那么将聚集全部要素再次回到。

安装

但是借使你钦定为负数,则会回到|负数|个,也正是说你钦定-100,那么尽管你只有拾贰个要素,也会给您取出玖十九个成分。

在 POSIX 系统中的安装

$ wget http://download.redis.io/xxxx.3-0.tar.gz
$ tar zxvf xxxx-3.0.tar.gz
$ cd redis-stable
$ make

Redis 没有外部依赖,安装过程大概。编写翻译后的 Redis 源代码目录的 src
文件夹中能够找到若干个可执行程序,最辛亏编译后一向实施 make install
命令来将那一个可执行程序复制到 /usr/local/bin
目录中以便现在推行顺序时得以不用输入完整的门道。

软件包管理器中的 redis 相比较古老,对升官和质量有震慑,不推荐使用。

澳门永利娱乐总站 3

在 OS X 系统中的安装

澳门永利娱乐总站 4

在 Windows 中的安装

澳门永利娱乐总站 5

启航和平息 Redis

平素开发银行

$ redis-server

暗许使用 Redis 会使用 6379 端口,通过 --port 参数能够自定义端口号:

$ redis-server --port 6380

瞩目在行使的时候也急需钦定相应的端口:

$ redis-cli -p 6380

通过起初化脚本运行 Redis

生产条件推荐应用此格局运转,能够使得 Redis 能随系统自动运营。在 Redis
安装目录下有1个 utils 目录中,有贰个名为 redis_init_script
的初步化脚本文件。

实际方式,可以参见本书中第壹章 2.2.1 小节。

不过完全没有必要,能够实施安装目录下的 utils/install_server.sh 脚本。

$ ./install_server.sh
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

亟待小心的是第贰步的时候能够采用端口号,假如需求钦定分化的端口或运维三个Redis 服务器,能够频仍推行该公文,然后内定分歧的端口即可。

依照最终的唤起,可以识破,在 345 的周转级别下,私下认可开机运转的。能够实行
chkconfig 命令查看:

$ chkconfig --list redis_6379
redis_6379         0:关    1:关    2:开    3:开    4:开    5:开    6:关

停止 Redis

设想到 Redis
有大概正在将内部存款和储蓄器中的数目同步到硬盘中,强行终止或然会促成数据丢失。正确截止的方法是向
Redis 发送 SHUTDOWN 命令:

$ redis-cli SHUTDOWN

专注,不是选择的暗许端口需求加上端口号,假使端口号为 6380,则:

$ redis-cli -p 6380 SHUTDOWN

除此以外我们能够观察上三张结果图,实际上,有时候也并不是那么自由,第叁张和第①张图9的次数字显示著多,第③张图1的次数字显示明多。那是由于汇集的仓库储存结构——散列表造成的。其散列函数为了兑现O(1)复杂度,会将成分映射到分歧的“桶”个中,比如成分9被存到第2个桶当中,那么下2遍进行自由数选取时,Redis先选用桶,那么自然第二个桶中数量少的话,被取出来的可能率也就大大扩展。

Redis 命令行客户端

发送命令

通过 redis-cli 向 Redis 发送命令有二种办法:

  • 第②种格局是将指令作为 redis-cli
    的参数执行,前边不跟参数会自行依照暗中认可配置来推行,也能够由此点名
    -h-p 内定地方和端口,Redis 提供了 PING 命令来测试客户端与
    Redis 的三番五次是不是正规,就算符合规律会收到 PONG;
  • 其次种情势是不附带参数运转redis-cli,那样会进入互相情势,能够随意输入指令,那种方法在要输入多条命令时相比较便利

命令再次回到值

最简单易行的一种答复,如举行 SET 会重临状态 OK 表示成功。

redis> PING
PONG

当现身命令不存在或指令格式有不当等景况时会重返错误回复,错误回复以(error)早先,并在后边跟上错误音讯。

Redis 固然并未整数类型,可是提供了一些用于整数操作的通令,如递增键值的
INCR
命令会以平头款式再次来到递增后的键值。除此之外还有一些其余的操作,如得到当前数据库的键的数指标
DBSIZE 命令。

redis> INCR foo
(integer) 1

是最常见的一种回复类型,当呼吁1个字符串类型的键的键值或三个别样类型键中的成分时,就会回到三个字符串,用引号包裹:

redis> GET foo
"1"

多行字符串回复中的每行字符串都是3个序号开头,如:

redis> keys *
1) "name"
2) "num"

配置

安插文件能够安装端口号、是或不是打开持久化、日志级别等。能够在开发银行 Redis
服务时内定布署文件,如:

$ redis-server /path/to/redis.conf

还要能够内定一些布局项,这样会覆盖配置文件之中的参数,如:

$ redis-server /path/to/redis.conf --loglevel warning

源代码目录中有三个布置文件的模版 redis.conf。

除此之外,还足以在 Redis 运营时通过 CONFIG SET 命令在不重复起动 Redis
的景况下动态修改部分 Redis 配置:

redis> CONFIG SET loglevel warning
OK

PS:并不是有所配置都足以运用 CONFIG SET 命令修改。

翻看配置:

redis> config get loglevel
1) "loglevel"
2) "notice"

率先行代表选项名,第一行就是选项值。

关于散列函数,拉链法解决争辨请看百度健全链接

绝当先六分之三据库

Redis
提供了四个用于存款和储蓄数据的字典,能够将中间的各样字典都掌握成1个独立的数据库。

每一种数据库对外都以以2个从0起首的递增数字命名, Redis 暗中认可协助 15个数据库。能够因此配备参数 databases 来修改这一数字。 客户端与 Redis
建立连接后会自动选用 0 号数据库,但是能够随时使用 SELSECT
命令更换数据库,如选取 1 号数据库:

redis> select 1
OK
  • Redis
    不帮忙自定义数据库的名字,每种数据库都是编号命名,开发者必须记录哪些数据仓库储存款和储蓄了怎么数据。
  • Redis
    不协助为每种数据库设置分裂的走访密码,所以八个客户端也许能够访问全体库,要么一个库也无法访问。
  • Redis 多个数据库之间并不是一心隔离的,假设 FLUSHALL
    命令能够清空一个实例下的富有数据库中的内容。不相同的利用应该运用分化的
    Redis 实例来囤积,由于 Redis 占用的内部存储器唯有 1MB
    左右,所以不要顾虑三个 Redis 实例会额外占用很多内存。

 

第三章

数据类型

热身

多少个基础命令:

① 、获取符合规则的键名列表

KEYS pattern

pattern 接济 glob 风格通配符格式:

  • ? 匹配一个字符
  • * 匹配任意个(包涵0个)字符
  • [] 匹配括号间的任一字符,可以利用 - 表示1个限制,如 a[b-d]
    能够匹配 “ab”、”ac”、”ad”
  • \x 匹配字母 x ,用于转义符号,如要匹配 ? ,能够利用 ?

注意: KEYS 命令要求遍历 Redis
中的全体键,当键的数量较多时会影响属性,不提议在生产环境中动用。
PS: Redis 不区分命令大小写

② 、判断三个键是还是不是留存

EXISTS key

设若存在再次来到 1,不设有重返 0.

3、删除键

DEL key [key1 ... ]

能够去除一个或多个键,重回值是去除的键的个数。

Tips: DEL 命令参数不帮忙通配符,但能够做类似 Linux
的管道符的操作。比如要刨除以 “user:”开关的键,能够执行
redis-cli KEYS "user:*" | xargs redis-cli DEL,别的由于 DEL
命令帮忙多少个键作为参数,能够执行
redis-cli DEL 'redis-cli KEYS "user:*"'(注意,里面是 “`” 号,操蛋的
markdown)。达到的意义同样,但功用更高。

四 、获取得键值的数据类型

TYPE key

再次回到值恐怕是
string(字符串类型)、hash(散列)、list(列表类型)、set(集合类型)、zset(有序聚集类型)。

字符串类型

介绍

它能积存任何款式的字符串,包罗二进制数据。一个字符串类型键允许存款和储蓄的数码的最大体积是
512MB。

命令

一 、赋值与取值

SET key value
GET key

存值时只要有空格要加引号,取值当不设有时,会重返空结果。

二 、递增数字

INCR key

当存储的字符串是整数时,INCR
命令的功用是让眼下键值递增,并回到增后的值。

redis> INCR pv
(integer) 2

PS: 当要操作的键不设有时会暗中同意键值为 0,所以首先次递增后的结果是 1

PS: 假若 key 不是整数类型,会报错

127.0.0.1:6379> SET name "Eden"
127.0.0.1:6379> INCR name
(error) ERR value is not an integer or out of range

PS: 不建议选取 GET SET
格局去将叁个值取出来,然后写三个函数去协调达成它,如若五个客户端同时取出了这个value,就会出竞态条件。而 Redis
自身上原子操作的,无论多少个客户端同时连接,都不会产出那种情形。

实践

TIPS: Redis 键命名

Redis 自己对于键的命名并不曾强制的须要,但正如实用的施行是用
“对象类型:对象ID:对象属性” 来命名的,如 user:1:friends

对此多少个单词则援引使用 “.” 分隔。

为了保证方便,命名一定要有含义。

一旦用 Redis 作为数据库,能够采取 INCR 命令来设置自增 ID。

存款和储蓄数据,如数组,大家须求动用类别化的函数(如PHP的 serialize
Javascript 的 JSON.stringify
),除此之外,字符串类型键能够储存二进制数据,能够使用 MessagePack
实行连串化,速度更快,占用空间更小。

一声令下拾遗

  1. 扩张钦点的平头, INCRBY key incrementINCR
    相似,只可是后者每便扩展 1 个,前者能够钦定数值。
  2. 减去钦命的整数, DECR keyDECRBY key decrementINCR
    相似,只可是是让键值递减。
  3. 追加钦点浮点数,
    INCRBYFLOAT key increment,能够增添壹个双精度浮点数。incrbyfloat salary 100.23
  4. 向底部追加值, APPEND key value
    向键值的底部追加值,若是键不存在则将该键的值设置为
    value,再次回到值是充实字符串后的总委员长度。
  5. 获得字符串长度, STRLEN key,重返键值的尺寸,借使不设有则赶回
    0,总括普通话时,借使为 utf-8 编码,则每一种粤语相当于 3 个出字节。
  6. 再正是获得/设置多个键值,MGET key [key1 key2 ...]
    MSET key value [key1 value1 ...],倘若位数有错误,会报错。
  7. 位操作,GETBIT key offset SETBIT key offset value
    BITCOUNT key [start] [end]
    BITOP operation destkey key [key ... ],略书 29 页。

redis>incr c
(integer) 1
redis> incrby c 5
(integer) 6

redis>decr c
(integer) 5
redis> decrby c 3
(integer) 2

redis>incrbyfloat c 1.5
"3.5"

redis>set greeting Hello
OK
redis>append greeting " world."
(integer) 11

127.0.0.1:6379> mset name ZhangSan sex man age 18
OK
127.0.0.1:6379> mget name sex age
1) "ZhangSan"
2) "man"
3) "18"

散列类型 (hash)

介绍

散列类型的键值也是一种字典结构,其储存了字段和字段值的照射,但字段值只好是字符串,不帮忙任何数据类型。换句话说,散列类型不可能嵌套其余的数据类型。一个散列类型键能够涵盖至多
232 – 1个字段。

而外散列类型, Redis
的其余数据类型同样不辅助数据类型嵌套。比如集合类型的各种成分都只可以是字符串,不能够是另贰个集聚或散列表等

散列类型适合储存对象:使用对象体系和 ID
构成键名,使用字段表示对象的习性,而字段值则存储属性值。

命令

① 、赋值与取值

HSET key field value
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HGETALL key

HSET
命令不区分插入和创新操作,那表示修改数据时不用事先判断字段是或不是留存来决定要实施的是插入仍旧更新操作。

② 、判断字段是或不是留存

HEXISTS key field

一经存在则赶回1,不然重临0(固然键不存在也会重回0)

叁 、当字段不设有时赋值

HSETNX key field value

PS:NX 表示 if not exists

肆 、扩展数字

HINCRBY key field increment

散列类型没有 HINCCRUISER 命令,不过足以经过 HINCRBY key filed 1
来贯彻,以前不存在的 key 会自动建立。

⑤ 、删除字段

HDEL key field [field2 ...]

实践

指令拾遗

壹 、只收获字段名或字段值

HKEYS key
HVALS key

贰 、获取字段数量

HLEN key

列表类型

介绍

列表类型能够储存3个平稳的字符串列表,常用的操作是向列表两端添欧成分,也许取得列表的某贰个部分。

列表类型内部是应用双向链表达成的,所以向列表两端添台币素的小时复杂度都以相同的
O(1)。

而是使用链表的代价是通过索引访问成分比较慢,也即从二个链表中获得某1个成分,那种气象下不如
散列 类型。

借助链表的品种,Redis
还是能用作队列使用,与散列类型键最多能容纳的字段数量一样,一个列表类型键最多能容纳
232 – 1 个元素。

命令

① 、向列表两端增澳元素

// 向左边增加元素,支持多个元素
LPUSH key value [value2 ... ]
// 向右边增加元素,支持多个元素
RPUSH key value [value2 ... ]

贰 、从列表两端弹出成分

// 从左边弹出一个元素
LPOP key
// 从右边弹出一个元素
RPOP key

弹出2个要素分两步操作:一是将列表两边的有个别成分删除,二是回来该因素。

③ 、获取列表中的成分个数

LLEN key

当键不设有时 LLEN 返回 0.

四 、获取列表片断

LRANGE key start stop

回去从 start 到 stop 之间的成分(包括两端的成分), Redis
的列表开头索引为 0。

LRANGE 命令在获得列表片段的还要不会像 LPOP 一样删除该片段。

LRANGE 命令也支撑负数索引,表示从左侧开头估算序数。如 -1
就表示左侧第贰个要素。

破例意况:

  1. 若是 start 的目录地方比 stop 的职位靠后,则会回来空驶列车表。
  2. 设若 stop 大于实际的目录范围,则会再次来到到列表最左边的要素。

五 、删除列表中钦点的值

LREM key count value

除去列表中前 count 个值为 value 的因素。再次回到值是实际上删除的因素的个数。

  1. 当 count > 0 时,LREM 命令会从列表左侧起头删除前 count 个值为
    value 的因素。
  2. 当 count < 0 时,LREM 命令会从列表左边开始删除前 |count| 个值为
    value 的要素。
  3. 当 count = 0 时,LREM 命令会删除全数值为 value 的因素。

实践

略 P45

指令拾遗

① 、获取 / 设置钦定索引的因素

// 获取索引为 index 的元素
LINDEX key index

// 设置索引为 index 的元素的值为 value
LSET key index value

目录从 0 起先,倘使 index
是负数表示从右边初步索引,左侧第二个要素的目录是 -1。

二 、只保留列表钦赐片段

LTRIM key start end

删除内定索引范围之外的具有因素,钦点列表范围的不二法门和 LRANGE 相同。

LTRIM 命令常和 LPUSH
命令一起来限制列表中元素的数量,比如记录2个日记时大家期待只保留最新的
100 条日志。

redis> LPUSH numbers 1
redis> LTRIM numbers 0 99

③ 、向列表中插入成分

LINSERT key BEFORE|AFTER  pivot value

LINSERT 命令先会在列表中从左到右查找值为 pivot
的要素,然后依照第贰个参数是 BEFORE 照旧 AFTESportage 来控制将 value
插入到该因素的前面依旧背后。

再次来到值为插入后列表的因素的个数。

PS:假诺列表中有三个因素的值都是相同的,也即有三个 pivot 的值,那么使用
LINSERT 命令只会插入到第二个要素的方今或前面。

四 、将一个因素从3个列表转到另2个列表

RPOPLPUSH source destination

RPOPLPUSH 会先从 source 列表类型键的入手弹出二个要素,然后将其插入到
destination 的左侧。并回到这几个成分的值。

当 source 和 destination 相同时,卡宴POPLPUSH
命令会不断地将队尾的因素移到队首,那么些特点能够达成三个网站监察和控制体系,具体必要见
P48。

聚拢类型(set)

介绍

在集结中的每种成分都以见仁见智的,且并未各样。贰个集合类型键能够储存至多
232 – 3个字符串。

鉴于集聚类型在 Redis
内部是利用值为空的散列表达成的,所以那么些操作的光阴复杂度都以O(1)。最方便的是多少个集合类型键之间还能举办并集、交集和差集运算。

命令

① 、扩张删除成分

// 向集合中增加一个或多个元素,如果键不存在则会自动创建
// 因为在一个集合中不能有相同元素,所以如果要加入的元素已经存在于集合中就会忽略这个元素
// 该命令返回成功加入的数量(忽略的元素不计在内)
SADD key member [member2 ...]

// 返回删除成功的个数
SREM key member [member2 ...]

贰 、获取集合中的全数因素

SMEMBERS key

回到集合中的全体因素

叁 、判断成分是不是在联谊中

SISMEMBER key member

key 集合中只要存在 member 值则赶回 1,假诺不存在则赶回 0。

④ 、集合间的运算

// 求差集
// 计算在 key 中出现,但在 key2 中没出现,得到的结果与 key3 进行计算
SDIFF key [key2 key3 ...]

// 求交集
// 在 key 中出现,同时也在 key2 中出现
SINTER key [key2 key3 ...]

// 求并集
// 
SUNION key [key2 key3 ...]

实践

  • 存款和储蓄作品标签
  • 经过标签搜索小说

命令拾遗

① 、获取成分中汇集的个数

SCARD key

二 、举行联谊运算并将结果存款和储蓄

SDIFFSTORE destination key [key2 ...]
SINTERSTORE destination key [key2 ...]
SUNIONSTORE destination key [key2 ...]

以上几个指令都将 SDIFF SINTER SUNION 总计得到的结果保存在键为
destination 的聚合中。

3、随机获得集合中的成分

SRANDMEMBER key [count]

能够传递 count 参数来3遍随机获得3个或四个元素。

传说 count 的正负分裂,具体表现也差异:

  • 当 count 为正数时, SRANDMEMBER 会随机从集合里获取 count
    个不另行的要素,如果 count
    的值超出集合中的元素个数(SCARD),则赶回集合中的全体要素,这么些因素不会再一次的
  • 当 count 为负时,会随便从集合里获得 |count |
    个因素,那几个要素或然再也

④ 、从集合中弹出二个要素

SPOP key

但出于汇集类型的因素是无序的,所以 SPOP
命令会从集合中随机选拔3个因素弹出。

以不变应万变聚集类型

介绍

在联谊类型的底蕴上有序聚集中的每种成分都事关了二个分数,那使得大家不仅可以形成插入、删除和判断成分是还是不是留存等联谊类型的操作,还能够够赢得分数最高(或低于)的前N个要素,获得钦点分数范围内的成分等与分数有关的操作。

集结中的成分是差别的,但它们中的分数是能够一如既往的。

稳步聚集与列表的相似点:

  • 两边都以雷打不动的。
  • 互相都得以赢得一定范围的成分。

不变聚集与列表的不相同点:

  • 列表是经过链表完结的,获取将近两端的数据丰硕快,而当成分增多后,访问中间的因素会相比慢,所以列表比较相符达成如“新鲜事”
    或 “日志”那样很少访问中间成分的应用;
  • 有序聚集类型是采纳散列表和跳跃表完毕的,不怕放在中等部位的数据,速度也相当慢
  • 列表中不能够简单地调动有些成分的岗位,可是不序集合能够(通过转移那几个成分的分数)
  • 稳步聚集要比列表类型更开销内部存款和储蓄器

命令

壹 、增欧成分

ZADD key score member [score2 member2 ...]

ZADD
命令用来向有序聚集中投入二个成分和该因素的分数,假若该因素已经存在,则会用新的分数替换原有的分数,
ZADD
命令的再次回到值是新加盟到聚集中的成分的个数(不带有以前早已存在的成分)

二 、获取成分的分数

ZSCORE key member

三 、获取排行在某些范围的要素列表

ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]

ZRANGE 命令会依据成分分数从小到大的次第再次来到索引从 start 到 stop
之间的全部因素(包蕴两端的成分),负数从后往前找(-1意味最后1个)。ZREVRANGE
命令会逆序查找。在底部加上 WITHSCORE 可以会同分数一起查出来。

# 返回所有 keys 集合中的元素
redis> ZRANGE keys 0 -1 

④ 、获得内定分数范围的成分

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset limit]

按元素分数从小到大的一一再次来到分数在 min 和 max 之间(包蕴 min 和
max)的成分。

如果愿意分数范围不带有端点值,能够在分数前增加“(”符号。

min 和 max 还帮忙无穷大, -inf+inf 分别表示负无穷和正无穷。

offset 和 limit 类似于 SQL 语句。

# 获取键为 scoreboard 的有序集合分数为80(不包含)到正无穷的元素
redis> ZRANGEBYSCORE scoreboard (80 +inf

伍 、增添有个别成分的分数

ZINCRBY key increment member

ZINCRBY 命令能够追加叁个因素的分数,重回值是改变后的分数。

实践

一声令下拾遗

一 、获得集合中成分的数据

ZCARD key

二 、获取钦定分数范围内的因素个数

ZCOUNT key min max

min 和 max 参数的特色与 ZRANGEBYSCORE 命令中的一样。

叁 、删除2个或八个因素

ZREM key member [member2 ...]

再次来到值是打响删除的成分的个数(不含有作者就不存在的因素)

④ 、根据名次范围删除成分

ZREMRANGEBYRANK key start stop

按成分分数从小到大的逐条(即索引从0起初)删除处在钦点名次范围内的因素,并赶回删除的要素数量。

伍 、按分数范围删除成分

ZREMRANGEBYSCORE key min max

删除钦点分数范围内的因素,min 和 max 性子和 ZRANGEBYSCORE
一样。重临值为除去成分的数额。

六 、获得成分的排名

ZRANK key member
ZREVRANK key member

按成分分数从小到大的一一获得钦赐的要素的排名(从0初叶)。后者相反。

第四章

事务

  • Redis 保障三个政工中的全体命令要么都实施,要么都不执行
  • Redis 中的事务保险二个业务内的指令依次执行而不被其它命令插入

错误处理

# 事务开始
redis> MULTI

redis> set str A
redis> set str B

# 事务结束
redis> EXEC
  1. 语法错误。语法错误指命令不设有也许命令参数的个数不对,只要有贰个指令有语法错误,执行
    EXEC 命令后 Redis 就会直接重回错误,连语法正确的吩咐也不例外。
  2. 运行错误。指在指令执行时现身的荒唐,比如利用散列类型的通令操作集合类型的健,假若事情里的一条命令运营错误,其余命令会继续执行(包涵出错命令之后的一声令下)。

WATCH 命令介绍

注意:
因为工作中的每一个命令的施行结果皆以最终一道回来的,所以不可能将前一条命令的结果作为下一条命令的参数。

WATCH
命令可以监察和控制3个或七个键,一旦中间有一个键被改动(或删除),之后的政工就不会履行。监察和控制一直不绝于耳到
EXEC 命令(事务中的命令是在 EXEC 之后才实施的,所以在 MULTI
命令后方可修改 WATCH 监察和控制的键值)。这是一种预防竞态条件的做法,如:

redis> set key 1
OK
redis> watch key
OK
redis> set key 2
OK
redis> multi
OK
redis> set key 3
QUEUED
redis> exec
(nil)
redis> get key
"2"

执行 EXEC
命令后会撤消对全数键的监督检查,如若不想进行工作中的命令也得以利用 UNWATCH
命令来废除监察和控制。

过期光阴

安装过期时间命令

# 单位是秒
EXPIRE key time

# 单位是毫秒
PEXPIRE key microtime

查看过期时间命令

# 返回毫秒数
TTL key

# 返回秒数
PTTL key

PS:假若键不存在,重临值为 -2, 假使永久保存,重回值为 -1

注销过期时间

  • 使用命令 PERSIST,若是成功铲除则赶回 1, 不然赶回
    0(因为键不存在或键本来便是永恒的)。
  • 使用 SETGETSET 命令也会去掉过期时刻(设置永不过期 -1)
  • 使用 EXPIRE 能够再次设置过期时间 expire key time

别的只对键值进行操作的命令 (如 INCRLPUSHHSET
ZREM),均不会影响键的晚点时间。

走访频率限制

P76

缓存

修改 Redis 配置文件(/usr/redis/6379.conf)。

  • 界定 Redis 能够使用的最大内部存款和储蓄器, maxmemory 参数,单位是 Byte
  • 跨越这一个范围时 Redis 会依据 maxmemory-policy
    参数内定的策略来删除不要求的键,其政策参考 P78 页
  • 当跨越限定时老是从数据库中随心所欲删除的多少个键的多寡会依据
    maxmemory-samples 参数来设置

排序

SORT 命令

SORT
命令能够对列表类型、集合类型和有序集合类型键进行排序,并且能够成功与关周到据库中的连接查询相就如的职责。

SORT key

除开能够排列数字外,SORT 命令能够由此 ALPHA
参数达成按字典顺序排列非数字元素

SORT key ALPHA

SORT 命令私下认可是正序排序,还是能逆序排序

SORT key DESC

还能辅助 LIMIT 参数来回到钦命范围的结果

SORT key DESC LIMIT offset limit

BY 参数

语法

~ BY 参考键

中间参考键可以是字符串类型键恐怕是散列类型键的某部字段(表示为
键名->字段名),要是提供了 BY 参数, SO福特ExplorerT
命令将不再依照成分自己的值进行排序,而是对各样成分运用要素的值替换参数键中的第②个”*” 并获取其值,其后依据该值对成分排序,如:

redis> SORT key BY posts:*->time DESC

上例中的posts:*->time 表示,有叁个散列类型的键值为 posts
的数据类型数据,在那之中有1特质量叫做 time,以上就是根据那个 time
的值来做为排序的基于。

假设多少个成分的参阅键值相同,则 SO卡宴T
命令会再比较成分本身的值来决定成分的逐条。

当有个别成分的参考键不设有时,会私下认可参考键的值为 0。

第五章

哪些在编程语言中选拔 Redis

第六章

Redis 脚本的强劲成效

沙盒、随机结果

第七章

Redis 持久化知识

RDB

AOF

第八章

多少个 Redis 实例维护的法门。

第九章

Redis 安全和磋商

相关文章