Redis 教程windows下Redis的安装和使用windows下Redis的安装和使用windows下Redis的安装和使用

 

 


Redis 教程

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵照BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它一般被称为数据结构服务器,由于值(value)能够是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。html

Redis 与其余 key - value 缓存产品有如下三个特色:

  • Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重启的时候能够再次加载进行使用。
  • Redis不只仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优点

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操做。
  • 原子 – Redis的全部操做都是原子性的,同时Redis还支持对几个操做全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过时等等特性。

Redis与其余key-value存储有什么不一样?

  • Redis有着更为复杂的数据结构而且提供对他们的原子性操做,这是一个不一样于其余数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中可是能够持久化到磁盘,因此在对不一样数据集进行高速读写时须要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另外一个优势是, 相比在磁盘上相同的复杂的数据结构,在内存中操做起来很是简单,这样Redis能够作不少内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,由于他们并不须要进行随机访问。

 

 

 


Redis 安装


Window 下安装

下载地址:https://github.com/dmajkic/redis/downloadsnode

image

下载到的Redis支持32bit和64bit。根据本身实际状况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reidspython

打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。mysql

若是想方便的话,能够把redis的路径加到系统的环境变量里,这样就免得再输路径了,后面的那个redis.conf能够省略,若是省略,会启用默认的。输入以后,会显示以下界面:git

Redis 安装

这时候另启一个cmd窗口,原来的不要关闭,否则就没法访问服务端了。程序员

切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。github

设置键值对 set myKey abcweb

取出键值对 get myKeyredis

Redis 安装

 

windows下Redis的安装和使用
 

一、要安装Redis,首先要获取安装包。Windows的Redis安装包须要到如下GitHub连接找到。连接:https://github.com/MSOpenTech/redis。打开网站后,找到Release,点击前往下载页面。算法

 

二、在下载网页中,找到最后发行的版本(此处是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,点击下载。这里说明一下,第一个是msi微软格式的安装包,第二个是压缩包。

三、双击刚下载好的msi格式的安装包(Redis-x64-3.2.100.msi)开始安装。

四、选择“赞成协议”,点击下一步继续。

五、选择“添加Redis目录到环境变量PATH中”,这样方便系统自动识别Redis执行文件在哪里。

六、端口号可保持默认的6379,并选择防火墙例外,从而保证外部能够正常访问Redis服务。

七、设定最大值为100M。做为实验和学习,100M足够了。

八、点击安装后,正式的安装过程开始。稍等一会便可完成。

九、安装完毕后,须要先作一些设定工做,以便服务启动后能正常运行。使用文本编辑器,这里使用Notepad++,打开Redis服务配置文件。注意:不要找错了,一般为redis.windows-service.conf,而不是redis.windows.conf。后者是以非系统服务方式启动程序使用的配置文件。

十、找到含有requirepass字样的地方,追加一行,输入requirepass 12345。这是访问Redis时所需的密码,通常测试状况下能够不用设定密码。不过,即便是做为本地访问,也建议设定一个密码。此处以简单的12345来演示。

十一、点击“开始”>右击“计算机”>选择“管理”。在左侧栏中依次找到并点击“计算机管理(本地)”>服务和应用程序>服务。再在右侧找到Redis名称的服务,查看启动状况。如未启动,则手动启动之。正常状况下,服务应该正常启动并运行了。

十二、最后来测试一下Redis是否正常提供服务。进入Redis的目录,cd C:\Program Files\Redis。输入redis-cli并回车。(redis-cli是客户端程序)如图正常提示进入,并显示正确端口号,则表示服务已经启动。

 
1三、使用服务前须要先经过密码验证。输入“auth 12345”并回车(12345是以前设定的密码)。返回提示OK表示验证经过。
1四、实际测试一下读写。输入set mykey1 "I love you all!”并回车,用来保存一个键值。再输入get mykey1,获取刚才保存的键值。
1五、注意事项
  • 1.Windows使用的这个Redis是64位版本的,32位操做系统的同窗就不要折腾了。
  • 2.做为服务运行的Redis配置文件,一般为redis.windows-service.conf,而不是redis.windows.conf。当心不要选错了。

 

 

 

 


Linux 下安装

下载地址:http://redis.io/download,下载最新文档版本。

本教程使用的最新文档版本为 2.8.17,下载并安装:

  1. $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
  2. $ tar xzf redis-2.8.17.tar.gz
  3. $ cd redis-2.8.17
  4. $ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务.

  1. $ cd src
  2. $ ./redis-server

注意这种方式启动redis 使用的是默认配置。也能够经过启动参数告诉redis使用指定配置文件使用下面命令启动。

  1. $ cd src
  2. $ ./redis-server redis.conf

redis.conf是一个默认的配置文件。咱们能够根据须要使用本身的配置文件。

启动redis服务进程后,就可使用测试客户端程序redis-cli和redis服务交互了。 好比:

  1. $ cd src
  2. $ ./redis-cli
  3. redis>set foo bar
  4. OK
  5. redis>get foo
  6. "bar"

Ubuntu 下安装

在 Ubuntu 系统安装 Redi 可使用如下命令:

  1. $sudo apt-get update
  2. $sudo apt-get install redis-server

启动 Redis

  1. $ redis-server

查看 redis 是否启动?

  1. $ redis-cli

以上命令将打开如下终端:

  1. redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。如今咱们输入 PING 命令。

  1. redis 127.0.0.1:6379> ping
  2. PONG

以上说明咱们已经成功安装了redis。

 


Redis 配置


Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。

你能够经过 CONFIG 命令查看或设置配置项。


语法3

Redis CONFIG 命令格式以下:

  1. redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

实例

127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>

image

 

使用 * 号获取全部配置项:

实例

127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) "123456"
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) "Logs/redis_log.txt"
 11) "pidfile"
 12) "/var/run/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "5"
 17) "timeout"
 18) "0"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "10000"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "cluster-node-timeout"
 76) "15000"
 77) "cluster-migration-barrier"
 78) "1"
 79) "cluster-slave-validity-factor"
 80) "10"
 81) "repl-diskless-sync-delay"
 82) "5"
 83) "cluster-require-full-coverage"
 84) "yes"
 85) "no-appendfsync-on-rewrite"
 86) "no"
 87) "slave-serve-stale-data"
 88) "yes"
 89) "slave-read-only"
 90) "yes"
 91) "stop-writes-on-bgsave-error"
 92) "yes"
 93) "daemonize"
 94) "no"
 95) "rdbcompression"
 96) "yes"
 97) "rdbchecksum"
 98) "yes"
 99) "activerehashing"
100) "yes"
101) "repl-disable-tcp-nodelay"
102) "no"
103) "repl-diskless-sync"
104) "no"
105) "aof-rewrite-incremental-fsync"
106) "yes"
107) "aof-load-truncated"
108) "yes"
109) "appendonly"
110) "no"
111) "dir"
112) "I:\\Mysql_DataBase\\Redis-x64-3.0.504\\Redis"
113) "maxmemory-policy"
114) "noeviction"
115) "appendfsync"
116) "everysec"
117) "save"
118) "jd 900 jd 300 jd 60"
119) "loglevel"
120) "notice"
121) "client-output-buffer-limit"
122) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
123) "unixsocketperm"
124) "0"
125) "slaveof"
126) ""
127) "notify-keyspace-events"
128) ""
129) "bind"
130) ""
127.0.0.1:6379>

image

 

 

 

 

 

 

 

 

 

 


编辑配置

你能够经过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。

语法  CONFIG SET 命令基本语法:

 

  1. redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

 

实例

image

127.0.0.1:6379> CONFIG SET  loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>



参数说明

redis.conf 配置项说明以下:

1. Redis默认不是以守护进程的方式运行,能够经过该配置项修改,使用yes启用守护进程

    daemonize no

2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,能够经过pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis监听端口,默认端口为6379,做者在本身的一篇博文中解释了为何选用6379做为默认端口,由于6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

4. 绑定的主机地址

    bind 127.0.0.1

5.当 客户端闲置多长时间后关闭链接,若是指定为0,表示关闭该功能

    timeout 300

6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

    loglevel verbose

7. 日志记录方式,默认为标准输出,若是配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

    logfile stdout

8. 设置数据库的数量,默认数据库为0,可使用SELECT <dbid>命令在链接上指定数据库id

    databases 16

9. 指定在多长时间内,有多少次更新操做,就将数据同步到数据文件,能够多个条件配合

    save < seconds> <changes>

    Redis默认配置文件中提供了三个条件:

    save 900 1

    save 300 10

    save 60 10000

    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

 

10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,若是为了节省CPU时间,能够关闭该选项,但会致使数据库文件变的巨大

    rdbcompression yes

11. 指定本地数据库文件名,默认值为dump.rdb

    dbfilename dump.rdb

12. 指定本地数据库存放目录

    dir ./

13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

    slaveof < masterip> <masterport>

14. 当master服务设置了密码保护时,slav服务链接master的密码

    masterauth <master-password>

15. 设置Redis链接密码,若是配置了链接密码,客户端在链接Redis时须要经过AUTH <password>命令提供密码,默认关闭

    requirepass foobared

16. 设置同一时间最大客户端链接数,默认无限制,Redis能够同时打开的客户端链接数为Redis进程能够打开的最大文件描述符数,若是设置 maxclients 0,表示不做限制。当客户端链接数到达限制时,Redis会关闭新的链接并向客户端返回max number of clients reached错误信息

    maxclients 128

17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将没法再进行写入操做,但仍然能够进行读取操做。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

    maxmemory < bytes>

18. 指定是否在每次更新操做后进行日志记录,Redis在默认状况下是异步的把数据写入磁盘,若是不开启,可能会在断电时致使一段时间内的数据丢失。由于 redis自己同步数据文件是按上面save条件来同步的,因此有的数据会在一段时间内只存在于内存中。默认为no

    appendonly no

19. 指定更新日志文件名,默认为appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日志条件,共有3个可选值: 
    no:表示等操做系统进行数据缓存同步到磁盘(快)
    always:表示每次更新操做后手动调用fsync()将数据写到磁盘(慢,安全)
    everysec:表示每秒同步一次(折衷,默认值)

    appendfsync everysec

 

21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)

     vm-enabled no

22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

     vm-swap-file /tmp/redis.swap

23. 将全部大于vm-max-memory的数据存入虚拟内存,不管vm-max-memory设置多小,全部索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,实际上是全部value都存在于磁盘。默认值为0

     vm-max-memory 0

24. Redis swap文件分红了不少的page,一个对象能够保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,做者建议若是存储不少小对象,page大小最好设置为32或者64bytes;若是存储很大大对象,则可使用更大的page,若是不 肯定,就使用默认值

     vm-page-size 32

25. 设置swap文件中的page数量,因为页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。

     vm-pages 134217728

26. 设置访问swap文件的线程数,最好不要超过机器的核数,若是设置为0,那么全部对swap文件的操做都是串行的,可能会形成比较长时间的延迟。默认值为4

     vm-max-threads 4

27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启

    glueoutputbuf yes

28. 指定在超过必定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

    hash-max-zipmap-entries 64

    hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)

    activerehashing yes

30. 指定包含其它的配置文件,能够在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有本身的特定配置文件

    include /path/to/local.conf

 

 

 

Redis  cmd 访问链接方式

I:\Mysql_DataBase\Redis-x64-3.0.504\Redis>dir
 驱动器 I 中的卷是 新加卷
 卷的序列号是 A237-7007

 I:\Mysql_DataBase\Redis-x64-3.0.504\Redis 的目录

2021/05/15  15:22    <DIR>          .
2021/05/15  15:22    <DIR>          ..
2021/05/15  15:22               383 dump.rdb
2016/07/01  15:54             1,024 EventLog.dll
2021/05/07  22:06    <DIR>          Logs
2016/07/01  15:52            12,618 Redis on Windows Release Notes.docx
2016/07/01  15:52            16,769 Redis on Windows.docx
2016/07/01  15:55           406,016 redis-benchmark.exe
2016/07/01  15:55         4,370,432 redis-benchmark.pdb
2016/07/01  15:55           257,024 redis-check-aof.exe
2016/07/01  15:55         3,518,464 redis-check-aof.pdb
2016/07/01  15:55           268,288 redis-check-dump.exe
2016/07/01  15:55         3,485,696 redis-check-dump.pdb
2016/07/01  15:55           482,304 redis-cli.exe
2016/07/01  15:55         4,517,888 redis-cli.pdb
2016/07/01  15:55         1,553,408 redis-server.exe
2016/07/01  15:55         6,909,952 redis-server.pdb
2021/05/07  22:24            43,947 redis.windows-service.conf
2016/07/01  15:52            43,927 redis.windows.conf
2016/07/01  09:17            14,265 Windows Service Documentation.docx
              17 个文件     25,902,405 字节
               3 个目录 3,279,902,744,576 可用字节

I:\Mysql_DataBase\Redis-x64-3.0.504\Redis>redis-cli -h 127.0.0.1 -p 6379 -a "123456"

image

 

 

 

Redis 数据类型


Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。


String(字符串)

string是redis最基本的类型,你能够理解成与Memcached如出一辙的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string能够包含任何数据。好比jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。

实例

image

127.0.0.1:6379> set name "alan.com"
OK
127.0.0.1:6379> get name
"alan.com"
127.0.0.1:6379>

在以上实例中咱们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为alan.com。注意:一个键最大能存储512MB。


Hash(哈希)

Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

实例

127.0.0.1:6379> hmset  user:1 username alan.com password alan.com points 200
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "alan.com"
3) "password"
4) "alan.com"
5) "points"
6) "200"
127.0.0.1:6379>

image

以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中咱们使用了 Redis HMSET, HEGTALL 命令,user:1 为键值。每一个 hash 能够存储 232 - 1 键值对(40多亿)。


List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素导列表的头部(左边)或者尾部(右边)。

实例

127.0.0.1:6379> lpush alan.com redis
(integer) 1
127.0.0.1:6379> lpush alan.com mongodb
(integer) 2
127.0.0.1:6379> lpush alan.com rebitmq
(integer) 3
127.0.0.1:6379> lrange alan.com 0 10
1) "rebitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379>


image

 

列表最多可存储 232 - 1 元素 (4294967295, 每一个列表可存储40多亿)。


Set(集合)

Redis的Set是string类型的无序集合。集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。

 

 

sadd 命令

添加一个string元素到,key对应的set集合中,成功返回1,若是元素以及在集合中返回0,key对应的set不存在返回错误。

  1. sadd key member

实例

127.0.0.1:6379> sadd set.alan.com redis
(integer) 1
127.0.0.1:6379> sadd set.alan.com mongodb
(integer) 1
127.0.0.1:6379> sadd set.alan.com rebitmq
(integer) 1
127.0.0.1:6379> smembers set.alan.com
1) "rebitmq"
2) "mongodb"
3) "redis"
127.0.0.1:6379>

image

 

 

注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的惟一性,第二次插入的元素将被忽略。集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。

image

 

 

 

 

 


zset(sorted set:有序集合)

Redis zset 和 set 同样也是string类型元素的集合,且不容许重复的成员。

不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。

zset的成员是惟一的,但分数(score)却能够重复。

 

 

zadd 命令

添加元素到集合,元素在集合中存在则更新对应score

  1. zadd key score member

实例

image

127.0.0.1:6379> zadd foshan 0 redis
(integer) 1
127.0.0.1:6379> zadd foshan 0 mongodb
(integer) 1
127.0.0.1:6379> zadd foshan 0 rebitmq
(integer) 1
127.0.0.1:6379> zadd foshan 0 rebitmq
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE foshan 0 1000
1) "mongodb"
2) "rebitmq"
3) "redis"
127.0.0.1:6379>





 

 

 

Redis 命令

 

Redis 命令

 

 


Redis 命令用于在 redis 服务上执行操做。

要在 redis 服务上执行命令须要一个 redis 客户端。Redis 客户端在咱们以前下载的的 redis 的安装包中。

语法

Redis 客户端的基本语法为:

  1. $ redis-cli

实例

如下实例讲解了如何启动 redis 客户端:

启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会链接本地的 redis 服务。

  1. $redis-cli
  2. redis 127.0.0.1:6379>
  3. redis 127.0.0.1:6379> PING
  4.  
  5. PONG

在以上实例中咱们链接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。


在远程服务上执行命令

 

若是须要在远程 redis 服务上执行命令,一样咱们使用的也是 redis-cli 命令。

语法

 

  1. $ redis-cli -h host -p port -a password

实例

如下实例演示了如何链接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。

 I:\Mysql_DataBase\Redis-x64-3.0.504 的目录

2021/05/07  22:06    <DIR>          .
2021/05/07  22:06    <DIR>          ..
2021/05/07  22:05            20,084 QQ截图20210507220538.png
2021/05/07  22:06            18,658 QQ截图20210507220601.png
2021/05/07  22:06            16,828 QQ截图20210507220608.png
2021/05/11  21:34    <DIR>          Redis
2021/05/07  22:04         6,733,824 Redis-x64-3.0.504.msi
               4 个文件      6,789,394 字节
               3 个目录 3,278,030,254,080 可用字节

I:\Mysql_DataBase\Redis-x64-3.0.504>redis-cli -h 127.0.0.1 -p 6379 -a "123456"
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

image

 

 

 

 

 


Redis 键(key)


 

 

Redis 键命令用于管理 redis 的键。

语法

Redis 键命令的基本语法以下:

  1. redis 127.0.0.1:6379> COMMAND KEY_NAME

 

实例

127.0.0.1:6379> set w3ckey redis
OK
127.0.0.1:6379> get w3ckey
"redis"
127.0.0.1:6379> del w3ckey
(integer) 1
127.0.0.1:6379> get w3ckey
(nil)
127.0.0.1:6379>

image

 

在以上实例中 DEL 是一个命令, w3ckey 是一个键。 若是键被删除成功,命令执行后输出 (integer) 1,不然将输出 (integer) 0


Redis keys 命令

下表给出了与 Redis 键相关的基本命令:

序号 命令及描述
1 DEL key
该命令用于在 key 存在是删除 key。
2 DUMP key 
序列化给定 key ,并返回被序列化的值。
3 EXISTS key 
检查给定 key 是否存在。
4 EXPIRE key seconds
为给定 key 设置过时时间。
5 EXPIREAT key timestamp 
EXPIREAT 的做用和 EXPIRE 相似,都用于为 key 设置过时时间。 不一样在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
6 PEXPIRE key milliseconds 
设置 key 的过时时间亿以毫秒计。
7 PEXPIREAT key milliseconds-timestamp 
设置 key 过时时间的时间戳(unix timestamp) 以毫秒计
8 KEYS pattern 
查找全部符合给定模式( pattern)的 key 。
9 MOVE key db 
将当前数据库的 key 移动到给定的数据库 db 当中。
10 PERSIST key 
移除 key 的过时时间,key 将持久保持。
11 PTTL key 
以毫秒为单位返回 key 的剩余的过时时间。
12 TTL key 
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13 RANDOMKEY 
从当前数据库中随机返回一个 key 。
14 RENAME key newkey 
修改 key 的名称
15 RENAMENX key newkey 
仅当 newkey 不存在时,将 key 更名为 newkey 。
16 TYPE key 
返回 key 所储存的值的类型。

 

 

 

 

 

 

 


Redis DEL 命令


Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。

语法

redis DEL 命令基本语法以下:

  1. redis 127.0.0.1:6379> DEL KEY_NAME

可用版本

>= 1.0.0

返回值

被删除 key 的数量。

实例

127.0.0.1:6379> set w3ckey redis
OK
127.0.0.1:6379> get w3ckey
"redis"
127.0.0.1:6379> del w3ckey
(integer) 1
127.0.0.1:6379> get w3ckey
(nil)
127.0.0.1:6379>
 
 
 

 

 

Redis Dump 命令


Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。

语法

redis DUMP 命令基本语法以下:

  1. redis 127.0.0.1:6379> DUMP KEY_NAME
可用版本

>= 2.6.0

返回值

若是 key 不存在,那么返回 nil 。 不然,返回序列化以后的值。

实例

首先,咱们在 redis 中建立一个 key 并设置值。

  1. redis> SET greeting "hello, dumping world!"
  2. OK

如今使用 DUMP 序列化键值。

  1. redis> DUMP greeting
  2. "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
  3.  
  4. redis> DUMP not-exists-key
  5. (nil)

 

 


Redis EXISTS 命令


Redis EXISTS 命令用于检查给定 key 是否存在。

语法

redis EXISTS 命令基本语法以下:

  1. redis 127.0.0.1:6379> EXISTS KEY_NAME
可用版本

>= 1.0.0

返回值

若 key 存在返回 1 ,不然返回 0 。

实例
  1. redis 127.0.0.1:6379> EXISTS apiref.comcc-new-key
  2. (integer) 0

如今咱们建立一个名为 apiref.comcc-new-key 的键并赋值,再使用 EXISTS 命令。

  1. redis 127.0.0.1:6379> set apiref.comcc-new-key newkey
  2. OK
  3. redis 127.0.0.1:6379> EXISTS apiref.comcc-new-key
  4. (integer) 1
  5. redis 127.0.0.1:6379>

Redis Expire 命令


Redis Expire 命令用于设置 key 的过时时间。key 过时后将再也不可用。

语法

redis Expire 命令基本语法以下:

  1. redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
可用版本

>= 1.0.0

返回值

设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。

实例

首先建立一个 key 并赋值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

为 key 设置过时时间:

  1. redis 127.0.0.1:6379> EXPIRE w3ckey 60
  2. (integer) 1

以上实例中咱们为键 w3ckey 设置了过时时间为 1 分钟,1分钟后该键会自动删除。

 


Redis Expireat 命令


Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过时时间。key 过时后将再也不可用。

语法

redis Expireat 命令基本语法以下:

  1. redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
可用版本

>= 1.0.0

返回值

设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。

实例

首先建立一个 key 并赋值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

为 key 设置过时时间:

  1. redis 127.0.0.1:6379> EXPIREAT w3ckey 1293840000
  2. (integer) 1
  3. EXISTS w3ckey
  4. (integer) 0

Redis PEXPIREAT 命令


Redis PEXPIREAT 命令用于设置 key 的过时时间,已毫秒技。key 过时后将再也不可用。

语法

redis PEXPIREAT 命令基本语法以下:

  1. redis 127.0.0.1:6379> PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
可用版本

>= 1.0.0

返回值

设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。

实例

首先建立一个 key 并赋值:

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK

为 key 设置过时时间:

  1. redis 127.0.0.1:6379> PEXPIREAT tutorialspoint 1555555555005
  2. (integer) 1

Redis Keys 命令


Redis Keys 命令用于查找全部符合给定模式 pattern 的 key 。。

语法

redis KEYS 命令基本语法以下:

  1. redis 127.0.0.1:6379> KEYS PATTERN
可用版本

>= 1.0.0

返回值

符合给定模式的 key 列表 (Array)。

实例

首先建立一些 key,并赋上对应值:

  1. redis 127.0.0.1:6379> SET w3c1 redis
  2. OK
  3. redis 127.0.0.1:6379> SET w3c2 mysql
  4. OK
  5. redis 127.0.0.1:6379> SET w3c3 mongodb
  6. OK

查找以 w3c 为开头的 key:

  1. redis 127.0.0.1:6379> KEYS w3c*
  2. 1) "w3c3"
  3. 2) "w3c1"
  4. 3) "w3c2"

获取 redis 中全部的 key 可用使用 *。

  1. redis 127.0.0.1:6379> KEYS *
  2. 1) "w3c3"
  3. 2) "w3c1"
  4. 3) "w3c2"

Redis Move 命令


Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。

语法

redis Move 命令基本语法以下:

  1. redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
可用版本

>= 1.0.0

返回值

移动成功返回 1 ,失败则返回 0 。

实例
  1. # key 存在于当前数据库
  2.  
  3. redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
  4. OK
  5.  
  6. redis> SET song "secret base - Zone"
  7. OK
  8.  
  9. redis> MOVE song 1 # 将 song 移动到数据库 1
  10. (integer) 1
  11.  
  12. redis> EXISTS song # song 已经被移走
  13. (integer) 0
  14.  
  15. redis> SELECT 1 # 使用数据库 1
  16. OK
  17.  
  18. redis:1> EXISTS song # 证明 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",代表正在使用数据库 1)
  19. (integer) 1
  20.  
  21.  
  22. # 当 key 不存在的时候
  23.  
  24. redis:1> EXISTS fake_key
  25. (integer) 0
  26.  
  27. redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
  28. (integer) 0
  29.  
  30. redis:1> select 0 # 使用数据库0
  31. OK
  32.  
  33. redis> EXISTS fake_key # 证明 fake_key 不存在
  34. (integer) 0
  35.  
  36.  
  37. # 当源数据库和目标数据库有相同的 key 时
  38.  
  39. redis> SELECT 0 # 使用数据库0
  40. OK
  41. redis> SET favorite_fruit "banana"
  42. OK
  43.  
  44. redis> SELECT 1 # 使用数据库1
  45. OK
  46. redis:1> SET favorite_fruit "apple"
  47. OK
  48.  
  49. redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
  50. OK
  51.  
  52. redis> MOVE favorite_fruit 1 # 由于两个数据库有相同的 key,MOVE 失败
  53. (integer) 0
  54.  
  55. redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
  56. "banana"
  57.  
  58. redis> SELECT 1
  59. OK
  60.  
  61. redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
  62. "apple"
 
 

 

Redis PERSIST 命令


Redis PERSIST 命令用于移除给定 key 的过时时间,使得 key 永不过时。

语法

redis PERSIST 命令基本语法以下:

  1. redis 127.0.0.1:6379> PERSIST KEY_NAME
可用版本

>= 2.2.0

返回值

当过时时间移除成功时,返回 1 。 若是 key 不存在或 key 没有设置过时时间,返回 0 。

实例
  1. redis> SET mykey "Hello"
  2. OK
  3.  
  4. redis> EXPIRE mykey 10 # 为 key 设置生存时间
  5. (integer) 1
  6.  
  7. redis> TTL mykey
  8. (integer) 10
  9.  
  10. redis> PERSIST mykey # 移除 key 的生存时间
  11. (integer) 1
  12.  
  13. redis> TTL mykey
  14. (integer) -1
 

Redis Pttl 命令


Redis Pttl 命令以毫秒为单位返回 key 的剩余过时时间。

语法

redis Pttl 命令基本语法以下:

  1. redis 127.0.0.1:6379> PTTL KEY_NAME
可用版本

>= 2.6.0

返回值

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 不然,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 之前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例
  1. # 不存在的 key
  2.  
  3. redis> FLUSHDB
  4. OK
  5.  
  6. redis> PTTL key
  7. (integer) -2
  8.  
  9.  
  10. # key 存在,但没有设置剩余生存时间
  11.  
  12. redis> SET key value
  13. OK
  14.  
  15. redis> PTTL key
  16. (integer) -1
  17.  
  18.  
  19. # 有剩余生存时间的 key
  20.  
  21. redis> PEXPIRE key 10086
  22. (integer) 1
  23.  
  24. redis> PTTL key
  25. (integer) 6179

Redis TTL 命令


Redis TTL 命令以秒为单位返回 key 的剩余过时时间。

语法

redis TTL 命令基本语法以下:

  1. redis 127.0.0.1:6379> TTL KEY_NAME
可用版本

>= 1.0.0

返回值

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 不然,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 之前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例
  1. # 不存在的 key
  2.  
  3. redis> FLUSHDB
  4. OK
  5.  
  6. redis> TTL key
  7. (integer) -2
  8.  
  9.  
  10. # key 存在,但没有设置剩余生存时间
  11.  
  12. redis> SET key value
  13. OK
  14.  
  15. redis> TTL key
  16. (integer) -1
  17.  
  18.  
  19. # 有剩余生存时间的 key
  20.  
  21. redis> EXPIRE key 10086
  22. (integer) 1
  23.  
  24. redis> TTL key
  25. (integer) 10084

Redis RANDOMKEY 命令


Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。

语法

redis RANDOMKEY 命令基本语法以下:

  1. redis 127.0.0.1:6379> RANDOMKEY
可用版本

>= 1.0.0

返回值

当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。

实例
  1. # 数据库不为空
  2.  
  3. redis> MSET fruit "apple" drink "beer" food "cookies" # 设置多个 key
  4. OK
  5.  
  6. redis> RANDOMKEY
  7. "fruit"
  8.  
  9. redis> RANDOMKEY
  10. "food"
  11.  
  12. redis> KEYS * # 查看数据库内全部key,证实 RANDOMKEY 并不删除 key
  13. 1) "food"
  14. 2) "drink"
  15. 3) "fruit"
  16.  
  17.  
  18. # 数据库为空
  19.  
  20. redis> FLUSHDB # 删除当前数据库全部 key
  21. OK
  22.  
  23. redis> RANDOMKEY
  24. (nil)

 


 

Redis Rename 命令


Redis Rename 命令用于修改 key 的名称 。

语法

redis Rename 命令基本语法以下:

  1. redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
可用版本

>= 1.0.0

返回值

更名成功时提示 OK ,失败时候返回一个错误。

当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。

实例
  1. # key 存在且 newkey 不存在
  2.  
  3. redis> SET message "hello world"
  4. OK
  5.  
  6. redis> RENAME message greeting
  7. OK
  8.  
  9. redis> EXISTS message # message 不复存在
  10. (integer) 0
  11.  
  12. redis> EXISTS greeting # greeting 取而代之
  13. (integer) 1
  14.  
  15.  
  16. # 当 key 不存在时,返回错误
  17.  
  18. redis> RENAME fake_key never_exists
  19. (error) ERR no such key
  20.  
  21.  
  22. # newkey 已存在时, RENAME 会覆盖旧 newkey
  23.  
  24. redis> SET pc "lenovo"
  25. OK
  26.  
  27. redis> SET personal_computer "dell"
  28. OK
  29.  
  30. redis> RENAME pc personal_computer
  31. OK
  32.  
  33. redis> GET pc
  34. (nil)
  35.  
  36. redis:1> GET personal_computer # 原来的值 dell 被覆盖了
  37. "lenovo"

 


Redis Renamenx 命令


Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。

语法

redis Renamenx 命令基本语法以下:

  1. redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
可用版本

>= 1.0.0

返回值

修改为功时,返回 1 。 若是 NEW_KEY_NAME 已经存在,返回 0 。

实例
  1. # newkey 不存在,更名成功
  2.  
  3. redis> SET player "MPlyaer"
  4. OK
  5.  
  6. redis> EXISTS best_player
  7. (integer) 0
  8.  
  9. redis> RENAMENX player best_player
  10. (integer) 1
  11.  
  12.  
  13. # newkey存在时,失败
  14.  
  15. redis> SET animal "bear"
  16. OK
  17.  
  18. redis> SET favorite_animal "butterfly"
  19. OK
  20.  
  21. redis> RENAMENX animal favorite_animal
  22. (integer) 0
  23.  
  24. redis> get animal
  25. "bear"
  26.  
  27. redis> get favorite_animal
  28. "butterfly"

Redis Type 命令


 

Redis Type 命令用于返回 key 所储存的值的类型。

语法

redis Renamenx 命令基本语法以下:

  1. redis 127.0.0.1:6379> TYPE KEY_NAME

可用版本

>= 1.0.0

返回值

返回 key 的数据类型,数据类型有:

  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)

实例

  1. # 字符串
  2.  
  3. redis> SET weather "sunny"
  4. OK
  5.  
  6. redis> TYPE weather
  7. string
  8.  
  9.  
  10. # 列表
  11.  
  12. redis> LPUSH book_list "programming in scala"
  13. (integer)1
  14.  
  15. redis> TYPE book_list
  16. list
  17.  
  18.  
  19. # 集合
  20.  
  21. redis> SADD pat "dog"
  22. (integer)1
  23.  
  24. redis> TYPE pat
  25. set

 

 

 


 

Redis 字符串(String)


Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法以下:

语法

  1. redis 127.0.0.1:6379> COMMAND KEY_NAME

 

实例

redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> GET w3ckey "redis"

在以上实例中咱们使用了 SET 和 GET 命令,键为 w3ckey。


Redis 字符串命令

下表列出了经常使用的 redis 字符串命令:

序号 命令及描述
1 SET key value 
设置指定 key 的值
2 GET key 
获取指定 key 的值。
3 GETRANGE key start end 
返回 key 中字符串值的子字符
4 GETSET key value
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
5 GETBIT key offset
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6 MGET key1 [key2..]
获取全部(一个或多个)给定 key 的值。
7 SETBIT key offset value
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
8 SETEX key seconds value
将值 value 关联到 key ,并将 key 的过时时间设为 seconds (以秒为单位)。
9 SETNX key value
只有在 key 不存在时设置 key 的值。
10 SETRANGE key offset value
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
11 STRLEN key
返回 key 所储存的字符串值的长度。
12 MSET key value [key value ...]
同时设置一个或多个 key-value 对。
13 MSETNX key value [key value ...] 
同时设置一个或多个 key-value 对,当且仅当全部给定 key 都不存在。
14 PSETEX key milliseconds value
这个命令和 SETEX 命令类似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
15 INCR key
将 key 中储存的数字值增一。
16 INCRBY key increment
将 key 所储存的值加上给定的增量值(increment) 。
17 INCRBYFLOAT key increment
将 key 所储存的值加上给定的浮点增量值(increment) 。
18 DECR key
将 key 中储存的数字值减一。
19 DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。
20 APPEND key value
若是 key 已经存在而且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

 


 

Redis SET 命令


 

Redis SET 命令用于设置给定 key 的值。若是 key 已经存储其余值, SET 就覆写旧值,且无视类型。

语法

redis SET 命令基本语法以下:

  1. redis 127.0.0.1:6379> SET KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

在 Redis 2.6.12 之前版本, SET 命令老是返回 OK 。

从 Redis 2.6.12 版本开始, SET 在设置操做成功完成时,才返回 OK 。

实例

首先,咱们在 redis 中建立一个 key 并设置值。

  1. # 对不存在的键进行设置
  2.  
  3. redis 127.0.0.1:6379> SET key "value"
  4. OK
  5.  
  6. redis 127.0.0.1:6379> GET key
  7. "value"
  8.  
  9.  
  10. # 对已存在的键进行设置
  11.  
  12. redis 127.0.0.1:6379> SET key "new-value"
  13. OK
  14.  
  15. redis 127.0.0.1:6379> GET key
  16. "new-value"

 


 

Redis Get 命令


 

Redis Get 命令用于获取指定 key 的值。若是 key 不存在,返回 nil 。若是key 储存的值不是字符串类型,返回一个错误。

语法

redis Get 命令基本语法以下:

  1. redis 127.0.0.1:6379> GET KEY_NAME

可用版本

>= 1.0.0

返回值

返回 key 的值,若是 key 不存在时,返回 nil。 若是 key 不是字符串类型,那么返回一个错误。

实例

  1. # 对不存在的 key 或字符串类型 key 进行 GET
  2.  
  3. redis> GET db
  4. (nil)
  5.  
  6. redis> SET db redis
  7. OK
  8.  
  9. redis> GET db
  10. "redis"
  11.  
  12.  
  13. # 对不是字符串类型的 key 进行 GET
  14.  
  15. redis> DEL db
  16. (integer)1
  17.  
  18. redis> LPUSH db redis mongodb mysql
  19. (integer)3
  20.  
  21. redis> GET db
  22. (error) ERR Operation against a key holding the wrong kind of value

 


 

Redis Getrange 命令


 

Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

语法

redis Getrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> GETRANGE KEY_NAME start end

可用版本

>= 2.4.0

返回值

截取获得的子字符串。

实例

首先,设置 mykey 的值并截取字符串。

  1. redis 127.0.0.1:6379> SET mykey "This is my test key"
  2. OK
  3. redis 127.0.0.1:6379> GETRANGE mykey 03
  4. "This"
  5. redis 127.0.0.1:6379> GETRANGE mykey 0-1
  6. "This is my test key"

 

 


Redis Getset 命令


 

Redis Getset 命令用于设置指定 key 的值,并返回 key 旧的值。

语法

redis Getset 命令基本语法以下:

  1. redis 127.0.0.1:6379> GETSET KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

实例

首先,设置 mykey 的值并截取字符串。

  1. redis 127.0.0.1:6379> GETSET mynewkey "This is my test key"
  2. (nil)
  3. redis 127.0.0.1:6379> GETSET mynewkey "This is my new value to test getset"
  4. "This is my test key"

 


 

Redis Getbit 命令


 

Redis Getbit 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

语法

redis Getbit 命令基本语法以下:

  1. redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET

可用版本

>= 2.2.0

返回值

字符串值指定偏移量上的位(bit)。

当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。

实例

  1. # 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0
  2.  
  3. redis> EXISTS bit
  4. (integer)0
  5.  
  6. redis> GETBIT bit 10086
  7. (integer)0
  8.  
  9.  
  10. # 对已存在的 offset 进行 GETBIT
  11.  
  12. redis> SETBIT bit 100861
  13. (integer)0
  14.  
  15. redis> GETBIT bit 10086
  16. (integer)1

 


 

Redis Mget 命令


 

Redis Mget 命令返回全部(一个或多个)给定 key 的值。 若是给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

语法

redis Mget 命令基本语法以下:

  1. redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN

可用版本

>= 1.0.0

返回值

一个包含全部给定 key 的值的列表。

实例

  1. redis 127.0.0.1:6379> SET key1 "hello"
  2. OK
  3. redis 127.0.0.1:6379> SET key2 "world"
  4. OK
  5. redis 127.0.0.1:6379> MGET key1 key2 someOtherKey
  6. 1)"Hello"
  7. 2)"World"
  8. 3)(nil)

 

 


 

Redis Setbit 命令


 

Redis Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

语法

redis Setbit 命令基本语法以下:

  1. redis 127.0.0.1:6379>Setbit KEY_NAME OFFSET

可用版本

>= 2.2.0

返回值

指定偏移量原来储存的位。

实例

  1. redis> SETBIT bit 100861
  2. (integer)0
  3.  
  4. redis> GETBIT bit 10086
  5. (integer)1
  6.  
  7. redis> GETBIT bit 100# bit 默认被初始化为 0
  8. (integer)0

 


Redis Setex 命令


 

Redis Setex 命令为指定的 key 设置值及其过时时间。若是 key 已经存在, SETEX 命令将会替换旧的值。

语法

redis Setex 命令基本语法以下:

  1. redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE

可用版本

>= 2.0.0

返回值

设置成功时返回 OK 。

实例

  1. redis 127.0.0.1:6379> SETEX mykey 60 redis
  2. OK
  3. redis 127.0.0.1:6379> TTL mykey
  4. 60
  5. redis 127.0.0.1:6379> GET mykey
  6. "redis

 

 


Redis Setnx 命令


 

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。

语法

redis Setnx 命令基本语法以下:

  1. redis 127.0.0.1:6379> SETNX KEY_NAME VALUE

可用版本

>= 1.0.0

返回值

设置成功,返回 1 。 设置失败,返回 0 。

实例

  1. redis> EXISTS job # job 不存在
  2. (integer)0
  3.  
  4. redis> SETNX job "programmer"# job 设置成功
  5. (integer)1
  6.  
  7. redis> SETNX job "code-farmer"# 尝试覆盖 job ,失败
  8. (integer)0
  9.  
  10. redis> GET job # 没有被覆盖
  11. "programmer"

 

 


 

Redis Setrange 命令


 

Redis Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

语法

redis Setrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE

可用版本

>= 2.2.0

返回值

被修改后的字符串长度。

实例

  1. redis 127.0.0.1:6379> SET key1 "Hello World"
  2. OK
  3. redis 127.0.0.1:6379> SETRANGE key1 6"Redis"
  4. (integer)11
  5. redis 127.0.0.1:6379> GET key1
  6. "Hello Redis"

 

 

 


 

Redis Strlen 命令


 

Redis Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

语法

redis Strlen 命令基本语法以下:

  1. redis 127.0.0.1:6379> STRLEN KEY_NAME

可用版本

>= 2.2.0

返回值

字符串值的长度。 当 key 不存在时,返回 0。

实例

  1. # 获取字符串的长度
  2.  
  3. redis> SET mykey "Hello world"
  4. OK
  5.  
  6. redis> STRLEN mykey
  7. (integer)11
  8.  
  9.  
  10. # 不存在的 key 长度为 0
  11.  
  12. redis> STRLEN nonexisting
  13. (integer)0

 


Redis Mset 命令


 

Redis Mset 命令用于同时设置一个或多个 key-value 对。

语法

redis Mset 命令基本语法以下:

  1. redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN

可用版本

>= 1.0.1

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"
  2. OK
  3. redis 127.0.0.1:6379> GET key1
  4. "Hello"
  5. redis 127.0.0.1:6379> GET key2
  6. 1)"World"

 

 



 

Redis Msetnx 命令


 

Redis Msetnx 命令用于全部给定 key 都不存在时,同时设置一个或多个 key-value 对。

语法

redis Msetnx 命令基本语法以下:

  1. redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN

可用版本

>= 1.0.1

返回值

当全部 key 都成功设置,返回 1 。 若是全部给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。

实例

  1. # 对不存在的 key 进行 MSETNX
  2.  
  3. redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"
  4. (integer)1
  5.  
  6. redis> MGET rmdbs nosql key-value-store
  7. 1)"MySQL"
  8. 2)"MongoDB"
  9. 3)"redis"
  10.  
  11.  
  12. # MSET 的给定 key 当中有已存在的 key
  13.  
  14. redis> MSETNX rmdbs "Sqlite" language "python"# rmdbs 键已经存在,操做失败
  15. (integer)0
  16.  
  17. redis> EXISTS language # 由于 MSET 是原子性操做,language 没有被设置
  18. (integer)0
  19.  
  20. redis> GET rmdbs # rmdbs 也没有被修改
  21. "MySQL"

 

 

Redis Psetex 命令


 

Redis Psetex 命令以毫秒为单位设置 key 的生存时间。

语法

redis Psetex 命令基本语法以下:

  1. redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1

可用版本

>= 2.6.0

返回值

设置成功时返回 OK 。

实例

  1. redis 127.0.0.1:6379> PSETEX mykey 1000"Hello"
  2. OK
  3. redis 127.0.0.1:6379> PTTL mykey
  4. 999
  5. redis 127.0.0.1:6379> GET mykey
  6. 1)"Hello"

 

 

Redis Incr 命令


 

Redis Incr 命令将 key 中储存的数字值增一。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCR 操做。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。

语法

redis Incr 命令基本语法以下:

  1. redis 127.0.0.1:6379> INCR KEY_NAME

可用版本

>= 1.0.0

返回值

执行 INCR 命令以后 key 的值。

实例

  1. redis> SET page_view 20
  2. OK
  3.  
  4. redis> INCR page_view
  5. (integer)21
  6.  
  7. redis> GET page_view # 数字值在 Redis 中以字符串的形式保存
  8. "21"

 

 

Redis Incrby 命令


 

Redis Incrby 命令将 key 中储存的数字加上指定的增量值。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCRBY 命令。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。

语法

redis Incrby 命令基本语法以下:

  1. redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT

可用版本

>= 1.0.0

返回值

加上指定的增量值以后, key 的值。

实例

  1. # key 存在且是数字值
  2.  
  3. redis> SET rank 50
  4. OK
  5.  
  6. redis> INCRBY rank 20
  7. (integer)70
  8.  
  9. redis> GET rank
  10. "70"
  11.  
  12.  
  13. # key 不存在时
  14.  
  15. redis> EXISTS counter
  16. (integer)0
  17.  
  18. redis> INCRBY counter 30
  19. (integer)30
  20.  
  21. redis> GET counter
  22. "30"
  23.  
  24.  
  25. # key 不是数字值时
  26.  
  27. redis> SET book "long long ago..."
  28. OK
  29.  
  30. redis> INCRBY book 200
  31. (error) ERR value isnot an integer orout of range

 

 

Redis Incrbyfloat 命令


 

Redis Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。

若是 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操做。

语法

redis Incrbyfloat 命令基本语法以下:

  1. redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT

可用版本

>= 2.6.0

返回值

执行命令以后 key 的值。

实例

  1. # 值和增量都不是指数符号
  2.  
  3. redis> SET mykey 10.50
  4. OK
  5.  
  6. redis> INCRBYFLOAT mykey 0.1
  7. "10.6"
  8.  
  9.  
  10. # 值和增量都是指数符号
  11.  
  12. redis> SET mykey 314e-2
  13. OK
  14.  
  15. redis> GET mykey # 用 SET 设置的值能够是指数符号
  16. "314e-2"
  17.  
  18. redis> INCRBYFLOAT mykey 0# 但执行 INCRBYFLOAT 以后格式会被改为非指数符号
  19. "3.14"
  20.  
  21.  
  22. # 能够对整数类型执行
  23.  
  24. redis> SET mykey 3
  25. OK
  26.  
  27. redis> INCRBYFLOAT mykey 1.1
  28. "4.1"
  29.  
  30.  
  31. # 后跟的 0 会被移除
  32.  
  33. redis> SET mykey 3.0
  34. OK
  35.  
  36. redis> GET mykey # SET 设置的值小数部分能够是 0
  37. "3.0"
  38.  
  39. redis> INCRBYFLOAT mykey 1.000000000000000000000# 但 INCRBYFLOAT 会将无用的 0 忽略掉,有须要的话,将浮点变为整数
  40. "4"
  41.  
  42. redis> GET mykey
  43. "4"

 

 

 

Redis Decr 命令


 

Redis Decr 命令将 key 中储存的数字值减一。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECR 操做。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。

语法

redis Decr 命令基本语法以下:

  1. redis 127.0.0.1:6379> DECR KEY_NAME

可用版本

>= 1.0.0

返回值

执行命令以后 key 的值。

实例

  1. # 对存在的数字值 key 进行 DECR
  2.  
  3. redis> SET failure_times 10
  4. OK
  5.  
  6. redis> DECR failure_times
  7. (integer)9
  8.  
  9.  
  10. # 对不存在的 key 值进行 DECR
  11.  
  12. redis> EXISTS count
  13. (integer)0
  14.  
  15. redis> DECR count
  16. (integer)-1
  17.  
  18.  
  19. # 对存在但不是数值的 key 进行 DECR
  20.  
  21. redis> SET company YOUR_CODE_SUCKS.LLC
  22. OK
  23.  
  24. redis> DECR company
  25. (error) ERR value isnot an integer orout of range

 

 

Redis Decrby 命令


 

Redis Decrby 命令将 key 所储存的值减去指定的减量值。

若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECRBY 操做。

若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操做的值限制在 64 位(bit)有符号数字表示以内。

语法

redis Decrby 命令基本语法以下:

  1. redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT

可用版本

>= 1.0.0

返回值

减去指定减量值以后, key 的值。

实例

  1. # 对已存在的 key 进行 DECRBY
  2.  
  3. redis> SET count 100
  4. OK
  5.  
  6. redis> DECRBY count 20
  7. (integer)80
  8.  
  9.  
  10. # 对不存在的 key 进行DECRBY
  11.  
  12. redis> EXISTS pages
  13. (integer)0
  14.  
  15. redis> DECRBY pages 10
  16. (integer)-10

 

 

Redis Append 命令


 

Redis Append 命令用于为指定的 key 追加值。

若是 key 已经存在而且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

若是 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 同样。

语法

redis Append 命令基本语法以下:

  1. redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE

可用版本

>= 2.0.0

返回值

追加指定值以后, key 中字符串的长度。

实例

  1. # 对不存在的 key 执行 APPEND
  2.  
  3. redis> EXISTS myphone # 确保 myphone 不存在
  4. (integer)0
  5.  
  6. redis> APPEND myphone "nokia"# 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"
  7. (integer)5# 字符长度
  8.  
  9.  
  10. # 对已存在的字符串进行 APPEND
  11.  
  12. redis> APPEND myphone " - 1110"# 长度从 5 个字符增长到 12 个字符
  13. (integer)12
  14.  
  15. redis> GET myphone
  16. "nokia - 1110"

 

 


Redis hash 命令

下表列出了 redis hash 基本的相关命令:

序号 命令及描述
1 HDEL key field2 [field2] 
删除一个或多个哈希表字段
2 HEXISTS key field 
查看哈希表 key 中,指定的字段是否存在。
3 HGET key field 
获取存储在哈希表中指定字段的值/td>
4 HGETALL key 
获取在哈希表中指定 key 的全部字段和值
5 HINCRBY key field increment 
为哈希表 key 中的指定字段的整数值加上增量 increment 。
6 HINCRBYFLOAT key field increment 
为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
7 HKEYS key 
获取全部哈希表中的字段
8 HLEN key 
获取哈希表中字段的数量
9 HMGET key field1 [field2] 
获取全部给定字段的值
10 HMSET key field1 value1 [field2 value2 ] 
同时将多个 field-value (域-值)对设置到哈希表 key 中。
11 HSET key field value 
将哈希表 key 中的字段 field 的值设为 value 。
12 HSETNX key field value 
只有在字段 field 不存在时,设置哈希表字段的值。
13 HVALS key 
获取哈希表中全部值
14 HSCAN key cursor [MATCH pattern] [COUNT count] 
迭代哈希表中的键值对。

 

Redis 哈希(Hash)


Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每一个 hash 能够存储 232 - 1 键值对(40多亿)。

实例
  1. redis 127.0.0.1:6379> HMSET w3ckey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
  2. OK
  3. redis 127.0.0.1:6379> HGETALL w3ckey
  4.  
  5. 1) "name"
  6. 2) "redis tutorial"
  7. 3) "description"
  8. 4) "redis basic commands for caching"
  9. 5) "likes"
  10. 6) "20"
  11. 7) "visitors"
  12. 8) "23000"

 

在以上实例中,咱们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 w3ckey 中。

 

 

Redis Hdel 命令


 

Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

语法

redis Hdel 命令基本语法以下:

  1. redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN

可用版本

>= 2.0.0

返回值

被成功删除字段的数量,不包括被忽略的字段。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HDEL myhash field1
  4. (integer)1
  5. redis 127.0.0.1:6379> HDEL myhash field2
  6. (integer)0

 

 

Redis Hexists 命令


 

Redis Hexists 命令用于查看哈希表的指定字段是否存在。

语法

redis Hexists 命令基本语法以下:

  1. redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME

可用版本

>= 2.0.0

返回值

若是哈希表含有给定字段,返回 1 。 若是哈希表不含有给定字段,或 key 不存在,返回 0 。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HEXISTS myhash field1
  4. (integer)1
  5. redis 127.0.0.1:6379> HEXISTS myhash field2
  6. (integer)0

 

Redis Hgetall 命令


 

Redis Hgetall 命令用于返回哈希表中,全部的字段和值。

在返回值里,紧跟每一个字段名(field name)以后是字段的值(value),因此返回值的长度是哈希表大小的两倍。

语法

redis Hgetall 命令基本语法以下:

  1. redis 127.0.0.1:6379> HGETALL KEY_NAME

可用版本

>= 2.0.0

返回值

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HGETALL myhash
  6. 1)"field1"
  7. 2)"Hello"
  8. 3)"field2"
  9. 4)"World"

 

 

Redis Hincrby 命令


 

Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。

增量也能够为负数,至关于对指定字段进行减法操做。

若是哈希表的 key 不存在,一个新的哈希表被建立并执行 HINCRBY 命令。

若是指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

对一个储存字符串值的字段执行 HINCRBY 命令将形成一个错误。

本操做的值被限制在 64 位(bit)有符号数字表示以内。

语法

redis Hincrby 命令基本语法以下:

  1. redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.0.0

返回值

执行 HINCRBY 命令以后,哈希表中字段的值。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 20
  2. (integer)1
  3. redis 127.0.0.1:6379> HINCRBY myhash field 1
  4. (integer)21
  5. redis 127.0.0.1:6379> HINCRBY myhash field -1
  6. (integer)20

 

 

Redis Hincrbyfloat 命令


 

Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。

若是指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

语法

redis Hincrbyfloat 命令基本语法以下:

  1. redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.6.0

返回值

执行 Hincrbyfloat 命令以后,哈希表中字段的值。

实例

  1. redis 127.0.0.1:6379> HSET myhash field 20.50
  2. (integer)1
  3. redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
  4. "20.60"

 



Redis Hkeys 命令


 

Redis Hkeys 命令用于获取哈希表中的全部字段名。

语法

redis Hkeys 命令基本语法以下:

  1. redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本

>= 2.0.0

返回值

包含哈希表中全部字段的列表。 当 key 不存在时,返回一个空列表。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HKEYS myhash
  6. 1)"field1"
  7. 2)"field2"

 

Redis Hlen 命令


 

Redis Hlen 命令用于获取哈希表中字段的数量。

语法

redis Hlen 命令基本语法以下:

  1. redis 127.0.0.1:6379> HLEN KEY_NAME

可用版本

>= 2.0.0

返回值

哈希表中字段的数量。 当 key 不存在时,返回 0 。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HLEN myhash
  6. (integer)2

 



Redis Hmget 命令


 

Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。

若是指定的字段不存在于哈希表,那么返回一个 nil 值。

语法

redis Hmget 命令基本语法以下:

  1. redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN

可用版本

>= 2.0.0

返回值

一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序同样。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
  6. 1)"foo"
  7. 2)"bar"
  8. 3)(nil)

 

Redis Hset 命令


 

Redis Hset 命令用于为哈希表中的字段赋值 。

若是哈希表不存在,一个新的哈希表被建立并进行 HSET 操做。

若是字段已经存在于哈希表中,旧值将被覆盖。

语法

redis Hset 命令基本语法以下:

  1. redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

若是字段是哈希表中的一个新建字段,而且值设置成功,返回 1 。 若是哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. OK
  3. redis 127.0.0.1:6379> HGET myhash field1
  4. "foo"
  5.  
  6. redis 127.0.0.1:6379> HSET website google "www.g.cn"# 设置一个新域
  7. (integer)1
  8.  
  9. redis 127.0.0.1:6379>HSET website google "www.google.com"# 覆盖一个旧域
  10. (integer)0

 



Redis Hsetnx 命令


 

Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。

若是哈希表不存在,一个新的哈希表被建立并进行 HSET 操做。

若是字段已经存在于哈希表中,操做无效。

若是 key 不存在,一个新哈希表被建立并执行 HSETNX 命令。

语法

redis Hsetnx 命令基本语法以下:

  1. redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

设置成功,返回 1 。 若是给定字段已经存在且没有操做被执行,返回 0 。

实例

  1. redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
  4. (integer)0
  5. redis 127.0.0.1:6379> HGET myhash field1
  6. "foo"
  7.  
  8. redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
  9. (integer)1
  10.  
  11. redis 127.0.0.1:6379> HSETNX nosql key-value-store redis # 操做无效, key-value-store 已存在
  12. (integer)0

 

 

 

 

Redis Hvals 命令


 

Redis Hvals 命令返回哈希表全部字段的值。

语法

redis Hvals 命令基本语法以下:

  1. redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE

可用版本

>= 2.0.0

返回值

一个包含哈希表中全部值的表。 当 key 不存在时,返回一个空表。

实例

  1. redis 127.0.0.1:6379> HSET myhash field1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> HSET myhash field2 "bar"
  4. (integer)1
  5. redis 127.0.0.1:6379> HVALS myhash
  6. 1)"foo"
  7. 2)"bar"
  8.  
  9. # 空哈希表/不存在的key
  10.  
  11. redis 127.0.0.1:6379> EXISTS not_exists
  12. (integer)0
  13.  
  14. redis 127.0.0.1:6379> HVALS not_exists
  15. (empty list orset)

 

 

 

Redis 列表命令

下表列出了列表相关的基本命令:

序号 命令及描述
1 BLPOP key1 [key2 ] timeout 
移出并获取列表的第一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
2 BRPOP key1 [key2 ] timeout 
移出并获取列表的最后一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3 BRPOPLPUSH source destination timeout 
从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回它; 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4 LINDEX key index 
经过索引获取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value 
在列表的元素前或者后插入元素
6 LLEN key 
获取列表长度
7 LPOP key 
移出并获取列表的第一个元素
8 LPUSH key value1 [value2] 
将一个或多个值插入到列表头部
9 LPUSHX key value 
将一个或多个值插入到已存在的列表头部
10 LRANGE key start stop 
获取列表指定范围内的元素
11 LREM key count value 
移除列表元素
12 LSET key index value 
经过索引设置列表元素的值
13 LTRIM key start stop 
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间以内的元素都将被删除。
14 RPOP key 
移除并获取列表最后一个元素
15 RPOPLPUSH source destination 
移除列表的最后一个元素,并将该元素添加到另外一个列表并返回
16 RPUSH key value1 [value2] 
在列表中添加一个或多个值
17 RPUSHX key value 
为已存在的列表添加值

 

 

 

 

 

 

Redis 列表(List)


Redis列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素导列表的头部(左边)或者尾部(右边)

一个列表最多能够包含 232 - 1 个元素 (4294967295, 每一个列表超过40亿个元素)。

实例

  1. redis 127.0.0.1:6379> LPUSH w3ckey redis
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH w3ckey mongodb
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSH w3ckey mysql
  6. (integer)3
  7. redis 127.0.0.1:6379> LRANGE w3ckey 010
  8.  
  9. 1)"mysql"
  10. 2)"mongodb"
  11. 3)"redis"

在以上实例中咱们使用了 LPUSH 将三个值插入了名为 w3ckey 的列表当中。

 

Redis Blpop 命令


 

Redis Blpop 命令移出并获取列表的第一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Blpop 命令基本语法以下:

  1. redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT

可用版本

>= 2.0.0

返回值

若是列表为空,返回一个 nil 。 不然,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

实例

  1. redis 127.0.0.1:6379> BLPOP list1 100

在以上实例中,操做会被阻塞,若是指定的列表 key list1 存在数据则会返回第一个元素,不然在等待100秒后会返回 nil 。

 

  1. (nil)
  2. (100.06s)

 

 

Redis Brpop 命令


 

Redis Brpop 命令移出并获取列表的最后一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Blpop 命令基本语法以下:

  1. redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT

可用版本

>= 2.0.0

返回值

假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

实例

  1. redis 127.0.0.1:6379> BRPOP list1 100

在以上实例中,操做会被阻塞,若是指定的列表 key list1 存在数据则会返回第一个元素,不然在等待100秒后会返回 nil 。

 

  1. (nil)
  2. (100.06s)

 

 

Redis Brpoplpush 命令


 

Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回它; 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

语法

redis Brpoplpush 命令基本语法以下:

  1. redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT

可用版本

>= 2.0.0

返回值

假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

实例

  1. # 非空列表
  2.  
  3. redis> BRPOPLPUSH msg reciver 500
  4. "hello moto"# 弹出元素的值
  5. (3.38s)# 等待时长
  6.  
  7. redis> LLEN reciver
  8. (integer)1
  9.  
  10. redis> LRANGE reciver 00
  11. 1)"hello moto"
  12.  
  13.  
  14. # 空列表
  15.  
  16. redis> BRPOPLPUSH msg reciver 1
  17. (nil)
  18. (1.34s)

 

 

 

Redis Lindex 命令


 

Redis Lindex 命令用于经过索引获取列表中的元素。你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法

redis Lindex 命令基本语法以下:

  1. redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION

可用版本

>= 1.0.0

返回值

列表中下标为指定索引值的元素。 若是指定索引值不在列表的区间范围内,返回 nil 。

实例

 

127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
127.0.0.1:6379> LINSERT list1 BEFORE "bar" "Yes"
(integer) 3
127.0.0.1:6379>  LRANGE mylist 0 -1
(empty list or set)
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
127.0.0.1:6379>

 

 

Redis Llen 命令


 

Redis Llen 命令用于返回列表的长度。 若是列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 若是 key 不是列表类型,返回一个错误。

语法

redis Llen 命令基本语法以下:

  1. redis 127.0.0.1:6379> LLEN KEY_NAME

可用版本

>= 1.0.0

返回值

列表的长度。

实例

 

 

127.0.0.1:6379> RPUSH list1 "foo"
(integer) 4
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
4) "foo"
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 5
127.0.0.1:6379>  LRANGE list1 0 -1
1) "foo"
2) "Yes"
3) "bar"
4) "foo"
5) "bar"
127.0.0.1:6379>  LLEN list1
(integer) 5
127.0.0.1:6379>

 

 

Redis Lpop 命令


 

Redis Lpop 命令用于移除并返回列表的第一个元素。

语法

redis Lpop 命令基本语法以下:

  1. redis 127.0.0.1:6379> LLEN KEY_NAME

可用版本

>= 1.0.0

返回值

列表的第一个元素。 当列表 key 不存在时,返回 nil 。

实例


127.0.0.1:6379>  LLEN list1
(integer) 5
127.0.0.1:6379> RPUSH list1 "foo"
(integer) 6
127.0.0.1:6379> RPUSH list1 "bar"
(integer) 7
127.0.0.1:6379>  LPOP list1
"foo"
127.0.0.1:6379>

 

 

Redis Lpush 命令


 

Redis Lpush 命令将一个或多个值插入到列表头部。 若是 key 不存在,一个空列表会被建立并执行 LPUSH 操做。 当 key 存在但不是列表类型时,返回一个错误。

注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受单个 value 值。

语法

redis Lpush 命令基本语法以下:

  1. redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

可用版本

>= 1.0.0

返回值

执行 LPUSH 命令后,列表的长度。

实例

 

127.0.0.1:6379> LPUSH list1 "foo"
(integer) 7
127.0.0.1:6379>  LPUSH list1 "bar"
(integer) 8
127.0.0.1:6379>  LRANGE list1 0 -1
1) "bar"
2) "foo"
3) "Yes"
4) "bar"
5) "foo"
6) "bar"
7) "foo"
8) "bar"
127.0.0.1:6379>

 

Redis Lpushx 命令


 

Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操做无效。

语法

redis Lpushx 命令基本语法以下:

  1. redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

可用版本

>= 2.2.0

返回值

LPUSHX 命令执行以后,列表的长度。

实例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSHX list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LPUSHX list2 "bar"
  6. (integer)0
  7. 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"foo"

 

Redis Lrange 命令


 

Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法

redis Lrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> LRANGE KEY_NAME START END

可用版本

>= 1.0.0

返回值

一个列表,包含指定区间内的元素。

实例

  1. redis 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSHX list1 "bar"
  6. (integer)0
  7. redis 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"bar"
  10. 3)"foo"

 



Redis Lrem 命令


 

Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

COUNT 的值能够是如下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中全部与 VALUE 相等的值。

语法

redis Lrem 命令基本语法以下:

  1. redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE

可用版本

>= 1.0.0

返回值

被移除元素的数量。 列表不存在时返回 0 。

实例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "hello"
  8. (integer)4
  9. redis 127.0.0.1:6379> LREM mylist -2"hello"
  10. (integer)2

 

 

Redis Lset 命令


 

Redis Lset 经过索引来设置元素的值。

当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。

关于列表下标的更多信息,请参考 LINDEX 命令

语法

redis Lset 命令基本语法以下:

  1. redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE

可用版本

>= 1.0.0

返回值

操做成功返回 ok ,不然返回错误信息。

实例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "hello"
  8. (integer)4
  9. redis 127.0.0.1:6379> LSET mylist 0"bar"
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1:"bar"
  13. 2)"hello"
  14. 3)"foo"
  15. 4)"hello"

 

 

Redis Ltrim 命令


 

Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间以内的元素都将被删除。

下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法

redis Ltrim 命令基本语法以下:

  1. redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP

可用版本

>= 1.0.0

返回值

命令执行成功时,返回 ok 。

实例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "bar"
  8. (integer)4
  9. redis 127.0.0.1:6379> LTRIM mylist 1-1
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1)"hello"
  13. 2)"foo"
  14. 3)"bar"

 

 

Redis Rpop 命令


 

Redis Rpop 命令用于移除并返回列表的最后一个元素。

语法

redis Rpop 命令基本语法以下:

  1. redis 127.0.0.1:6379> RPOP KEY_NAME

可用版本

>= 1.0.0

返回值

列表的最后一个元素。 当列表不存在时,返回 nil 。

实例

  1. redis 127.0.0.1:6379> RPUSH mylist "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> RPUSH mylist "hello"
  4. (integer)2
  5. redis 127.0.0.1:6379> RPUSH mylist "foo"
  6. (integer)3
  7. redis 127.0.0.1:6379> RPUSH mylist "bar"
  8. (integer)4
  9. redis 127.0.0.1:6379> RPOP mylist
  10. OK
  11. redis 127.0.0.1:6379> LRANGE mylist 0-1
  12. 1)"hello"
  13. 2)"hello"
  14. 3)"foo"

 

 

 

Redis Lpush 命令


 

Redis Lpush 命令将一个或多个值插入到列表头部。 若是 key 不存在,一个空列表会被建立并执行 LPUSH 操做。 当 key 存在但不是列表类型时,返回一个错误。

注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受单个 value 值。

语法

redis Lpush 命令基本语法以下:

  1. redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

可用版本

>= 1.0.0

返回值

执行 LPUSH 命令后,列表的长度。

实例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LRANGE list1 0-1
  6. 1)"bar"
  7. 2)"foo"

 

 

 

Redis Lpushx 命令


 

Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操做无效。

语法

redis Lpushx 命令基本语法以下:

  1. redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

可用版本

>= 2.2.0

返回值

LPUSHX 命令执行以后,列表的长度。

实例

  1. 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. 127.0.0.1:6379> LPUSHX list1 "bar"
  4. (integer)2
  5. 127.0.0.1:6379> LPUSHX list2 "bar"
  6. (integer)0
  7. 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"foo"

 

Redis Lrange 命令


 

Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法

redis Lrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> LRANGE KEY_NAME START END

可用版本

>= 1.0.0

返回值

一个列表,包含指定区间内的元素。

实例

  1. redis 127.0.0.1:6379> LPUSH list1 "foo"
  2. (integer)1
  3. redis 127.0.0.1:6379> LPUSH list1 "bar"
  4. (integer)2
  5. redis 127.0.0.1:6379> LPUSHX list1 "bar"
  6. (integer)0
  7. redis 127.0.0.1:6379> LRANGE list1 0-1
  8. 1)"bar"
  9. 2)"bar"
  10. 3)"foo"

 



 

 

Redis 集合命令

下表列出了 Redis 集合基本命令:

序号 命令及描述
1 SADD key member1 [member2] 
向集合添加一个或多个成员
2 SCARD key 
获取集合的成员数
3 SDIFF key1 [key2] 
返回给定全部集合的差集
4 SDIFFSTORE destination key1 [key2] 
返回给定全部集合的差集并存储在 destination 中
5 SINTER key1 [key2] 
返回给定全部集合的交集
6 SINTERSTORE destination key1 [key2] 
返回给定全部集合的交集并存储在 destination 中
7 SISMEMBER key member 
判断 member 元素是不是集合 key 的成员
8 SMEMBERS key 
返回集合中的全部成员
9 SMOVE source destination member 
将 member 元素从 source 集合移动到 destination 集合
10 SPOP key 
移除并返回集合中的一个随机元素
11 SRANDMEMBER key [count] 
返回集合中一个或多个随机数
12 SREM key member1 [member2] 
移除集合中一个或多个成员
13 SUNION key1 [key2] 
返回全部给定集合的并集
14 SUNIONSTORE destination key1 [key2] 
全部给定集合的并集存储在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count] 
迭代集合中的元素

 

Redis 集合(Set)


Redis的Set是string类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。

实例

  1. redis 127.0.0.1:6379> SADD w3ckey redis
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD w3ckey mongodb
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD w3ckey mysql
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD w3ckey mysql
  8. (integer)0
  9. redis 127.0.0.1:6379> SMEMBERS w3ckey
  10.  
  11. 1)"mysql"
  12. 2)"mongodb"
  13. 3)"redis"

在以上实例中咱们经过 SADD 命令向名为 w3ckey 的集合插入的三个元素。

 

Redis Sadd 命令


 

Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。

假如集合 key 不存在,则建立一个只包含添加的元素做成员的集合。

当集合 key 不是集合类型时,返回一个错误。

注意:在Redis2.4版本之前, SADD 只接受单个成员值。

语法

redis Sadd 命令基本语法以下:

  1. redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN

可用版本

>= 1.0.0

返回值

被添加到集合中的新元素的数量,不包括被忽略的元素。

实例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "hello"
  6. (integer)0
  7. redis 127.0.0.1:6379> SMEMBERS myset
  8. 1)"hello"
  9. 2)"foo"

 

 

 

Redis Scard 命令


 

Redis Scard 命令返回集合中元素的数量。

语法

redis Scard 命令基本语法以下:

  1. redis 127.0.0.1:6379> SCARD KEY_NAME

可用版本

>= 1.0.0

返回值

集合的数量。 当集合 key 不存在时,返回 0 。

实例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "hello"
  6. (integer)0
  7. redis 127.0.0.1:6379> SCARD myset
  8. (integer)2

 

 

 

Redis Sdiff 命令


 

Redis Sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。

语法

redis Sdiff 命令基本语法以下:

  1. redis 127.0.0.1:6379> SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN

可用版本

>= 1.0.0

返回值

包含差集成员的列表。

实例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SDIFF myset myset2
  12. 1)"foo"
  13. 2)"bar"

 

 

 

Redis Sdiffstore 命令


 

Redis Sdiffstore 命令将给定集合之间的差集存储在指定的集合中。若是指定的集合 key 已存在,则会被覆盖。

语法

redis Sdiffstore 命令基本语法以下:

  1. redis 127.0.0.1:6379> SDIFFSTORE DESTINATION_KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

结果集中的元素数量。

实例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SDIFFSTORE destset myset myset2
  12. (integer)2
  13. redis 127.0.0.1:6379> SMEMBERS destset
  14. 1)"foo"
  15. 2)"bar"

 

 

Redis Sinter 命令


 

Redis Sinter 命令返回给定全部给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

语法

redis Sinter 命令基本语法以下:

  1. redis 127.0.0.1:6379> SINTER KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

交集成员的列表。

实例

  1. redis 127.0.0.1:6379> SADD myset "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SINTER myset myset2
  12. 1)"hello"

 

 

 

Redis Sinterstore 命令


 

Redis Sinterstore 命令将给定集合之间的交集存储在指定的集合中。若是指定的集合已经存在,则将其覆盖。

语法

redis Sinterstore 命令基本语法以下:

  1. redis 127.0.0.1:6379> SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

交集成员的列表。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "world"
  10. (integer)1
  11. redis 127.0.0.1:6379> SINTERSTORE myset myset1 myset2
  12. (integer)1
  13. redis 127.0.0.1:6379> SMEMBERS myset
  14. 1)"hello"

 

 

 

Redis Sismember 命令


 

Redis Sismember 命令判断成员元素是不是集合的成员。

语法

redis Sismember 命令基本语法以下:

  1. redis 127.0.0.1:6379> SISMEMBER KEY VALUE

可用版本

>= 1.0.0

返回值

若是成员元素是集合的成员,返回 1 。 若是成员元素不是集合的成员,或 key 不存在,返回 0 。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SISMEMBER myset1 "hello"
  4. (integer)1
  5. redis 127.0.0.1:6379> SISMEMBER myset1 "world"
  6. (integer)0

 

 

 

Redis Smembers 命令


 

Redis Smembers 命令返回集合中的全部的成员。 不存在的集合 key 被视为空集合。

语法

redis Smembers 命令基本语法以下:

  1. redis 127.0.0.1:6379> SMEMBERS KEY VALUE

可用版本

>= 1.0.0

返回值

集合中的全部成员。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SMEMBERS myset1
  6. 1)"World"
  7. 2)"Hello"

 

 

 

Redis Smove 命令


 

Redis Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合。

SMOVE 是原子性操做。

若是 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操做,仅返回 0 。不然, member 元素从 source 集合中被移除,并添加到 destination 集合中去。

当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

当 source 或 destination 不是集合类型时,返回一个错误。

语法

redis Smove 命令基本语法以下:

  1. redis 127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER

可用版本

>= 1.0.0

返回值

若是成员元素被成功移除,返回 1 。 若是成员元素不是 source 集合的成员,而且没有任何操做对 destination 集合执行,那么返回 0 。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "foo"
  8. (integer)1
  9. redis 127.0.0.1:6379> SMOVE myset1 myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SMEMBERS myset1
  12. 1)"World"
  13. 2)"Hello"
  14. redis 127.0.0.1:6379> SMEMBERS myset2
  15. 1)"foo"
  16. 2)"bar"

 

 

 

Redis Spop 命令


 

Redis Spop 命令用于移除并返回集合中的一个随机元素。

语法

redis Spop 命令基本语法以下:

  1. redis 127.0.0.1:6379> SPOP KEY

可用版本

>= 1.0.0

返回值

被移除的随机元素。 当集合不存在或是空集时,返回 nil 。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SPOP myset1
  8. "bar"
  9. redis 127.0.0.1:6379> SMEMBERS myset1
  10. 1)"Hello"
  11. 2)"world"

 

 

 

 

Redis Srandmember 命令


 

Redis Srandmember 命令用于返回集合中的一个随机元素。

从 Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数:

  • 若是 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。若是 count 大于等于集合基数,那么返回整个集合。
  • 若是 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现屡次,而数组的长度为 count 的绝对值。

该操做和 SPOP 类似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。

语法

redis Srandmember 命令基本语法以下:

  1. redis 127.0.0.1:6379> SRANDMEMBER KEY [count]

可用版本

>= 1.0.0

返回值

只提供集合 key 参数时,返回一个元素;若是集合为空,返回 nil 。 若是提供了 count 参数,那么返回一个数组;若是集合为空,返回空数组。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SRANDMEMBER myset1
  8. "bar"
  9. redis 127.0.0.1:6379> SRANDMEMBER myset1 2
  10. 1)"Hello"
  11. 2)"world"

 

 

Redis Srem 命令


 

Redis Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。

当 key 不是集合类型,返回一个错误。

在 Redis 2.4 版本之前, SREM 只接受单个成员值。

语法

redis Srem 命令基本语法以下:

  1. redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN

可用版本

>= 1.0.0

返回值

被成功移除的元素的数量,不包括被忽略的元素。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SREM myset1 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SREM myset1 "foo"
  10. (integer)0
  11. redis 127.0.0.1:6379> SMEMBERS myset1
  12. 1)"bar"
  13. 2)"world"

 

 



 

Redis Sunion 命令


 

Redis Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。

语法

redis Sunion 命令基本语法以下:

  1. redis 127.0.0.1:6379> SUNION KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

并集成员的列表。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SUNION myset1 myset2
  12. 1)"bar"
  13. 2)"world"
  14. 3)"hello"
  15. 4)"foo"

 

 

 

 

Redis Sunionstore 命令


 

Redis Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。若是 destination 已经存在,则将其覆盖。

语法

redis Sunionstore 命令基本语法以下:

  1. redis 127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY1..KEYN

可用版本

>= 1.0.0

返回值

结果集中的元素数量。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "world"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> SADD myset2 "hello"
  8. (integer)1
  9. redis 127.0.0.1:6379> SADD myset2 "bar"
  10. (integer)1
  11. redis 127.0.0.1:6379> SUNIONSTORE myset myset1 myset2
  12. (integer)1
  13. redis 127.0.0.1:6379> SMEMBERS myset
  14. 1)"bar"
  15. 2)"world"
  16. 3)"hello"
  17. 4)"foo"

 

 

 

Redis Sscan 命令


 

Redis Sscan 命令用于迭代集合键中的元素。

语法

redis Sscan 命令基本语法以下:

  1. redis 127.0.0.1:6379> SSCAN KEY [MATCH pattern][COUNT count]

可用版本

>= 1.0.0

返回值

数组列表。

实例

  1. redis 127.0.0.1:6379> SADD myset1 "hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> SADD myset1 "hi"
  4. (integer)1
  5. redis 127.0.0.1:6379> SADD myset1 "bar"
  6. (integer)1
  7. redis 127.0.0.1:6379> sscan myset1 0 match h*
  8. 1)"0"
  9. 2)1)"hello"
  10. 2)"h1"

 

 

 

 

Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

序号 命令及描述
1 ZADD key score1 member1 [score2 member2] 
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2 ZCARD key 
获取有序集合的成员数
3 ZCOUNT key min max 
计算在有序集合中指定区间分数的成员数
4 ZINCRBY key increment member 
有序集合中对指定成员的分数加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6 ZLEXCOUNT key min max 
在有序集合中计算指定字典区间内成员数量
7 ZRANGE key start stop [WITHSCORES] 
经过索引区间返回有序集合成指定区间内的成员
8 ZRANGEBYLEX key min max [LIMIT offset count] 
经过字典区间返回有序集合的成员
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 
经过分数返回有序集合指定区间内的成员
10 ZRANK key member 
返回有序集合中指定成员的索引
11 ZREM key member [member ...] 
移除有序集合中的一个或多个成员
12 ZREMRANGEBYLEX key min max 
移除有序集合中给定的字典区间的全部成员
13 ZREMRANGEBYRANK key start stop 
移除有序集合中给定的排名区间的全部成员
14 ZREMRANGEBYSCORE key min max 
移除有序集合中给定的分数区间的全部成员
15 ZREVRANGE key start stop [WITHSCORES] 
返回有序集中指定区间内的成员,经过索引,分数从高到底
16 ZREVRANGEBYSCORE key max min [WITHSCORES] 
返回有序集中指定分数区间内的成员,分数从高到低排序
17 ZREVRANK key member 
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18 ZSCORE key member 
返回有序集中,成员的分数值
19 ZUNIONSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的并集,并存储在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count] 
迭代有序集合中的元素(包括元素成员和元素分值)

 

Redis 有序集合(sorted set)


Redis 有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。

不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是惟一的,但分数(score)却能够重复。

集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。

实例

  1. redis 127.0.0.1:6379> ZADD w3ckey 1 redis
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD w3ckey 2 mongodb
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD w3ckey 3 mysql
  6. (integer)1
  7. redis 127.0.0.1:6379> ZADD w3ckey 3 mysql
  8. (integer)0
  9. redis 127.0.0.1:6379> ZADD w3ckey 4 mysql
  10. (integer)0
  11. redis 127.0.0.1:6379> ZRANGE w3ckey 010 WITHSCORES
  12.  
  13. 1)"redis"
  14. 2)"1"
  15. 3)"mongodb"
  16. 4)"2"
  17. 5)"mysql"
  18. 6)"4"

在以上实例中咱们经过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。

 

Redis Zadd 命令


Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。

若是某个成员已是有序集的成员,那么更新这个成员的分数值,并经过从新插入这个成员元素,来保证该成员在正确的位置上。

分数值能够是整数值或双精度浮点数。

若是有序集合 key 不存在,则建立一个空的有序集并执行 ZADD 操做。

当 key 存在但不是有序集类型时,返回一个错误。

注意: 在 Redis 2.4 版本之前, ZADD 每次只能添加一个元素。

语法

redis Zadd 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN

可用版本

>= 1.2.0

返回值

被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。

实例

  1. redis 127.0.0.1:6379> ZADD myset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZRANGE myzset 0-1 WITHSCORES
  8. 1)"hello"
  9. 2)"1"
  10. 3)"foo"
  11. 4)"1"
  12. 5)"world"
  13. 6)"2"
  14. 7)"bar"
  15. 8)"3"

 

 

Redis Zcard 命令


Redis Zcard 命令用于计算集合中元素的数量。

语法

redis Zcard 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZCARD KEY_NAME

可用版本

>= 1.2.0

返回值

当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。

实例

  1. redis 127.0.0.1:6379> ZADD myset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZCARD myzset
  8. (integer)4

 

 

Redis Zcount 命令


Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。

语法

redis Zcount 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZCOUNT key min max

可用版本

>= 2.0.0

返回值

分数值在 min 和 max 之间的成员的数量。

实例

  1. redis 127.0.0.1:6379> ZADD myzset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myzset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD myzset 2"world"3"bar"
  6. (integer)2
  7. redis 127.0.0.1:6379> ZCOUNT myzset 13
  8. (integer)4

 

 

Redis Zincrby 命令


Redis Zincrby 命令对有序集合中指定成员的分数加上增量 increment

能够经过传递一个负数值 increment ,让分数减去相应的值,好比 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。

当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。

当 key 不是有序集类型时,返回一个错误。

分数值能够是整数值或双精度浮点数。

语法

redis Zincrby 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZINCRBY key increment member

可用版本

>= 1.2.0

返回值

member 成员的新分数值,以字符串形式表示。

实例

  1. redis 127.0.0.1:6379> ZADD myzset 1"hello"
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD myzset 1"foo"
  4. (integer)1
  5. redis 127.0.0.1:6379> ZINCRBY myzset 2"hello"
  6. (integer)3
  7. redis 127.0.0.1:6379> ZRANGE myzset 0-1 WITHSCORES
  8. 1)"foo"
  9. 2)"2"
  10. 3)"hello"
  11. 4)"3"

 

 

Redis Zinterstore 命令


Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。

默认状况下,结果集中某个成员的分数值是全部给定集下该成员分数值之和。

语法

redis Zinterstore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZINTERSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]

可用版本

>= 2.0.0

返回值

保存到目标结果集的的成员数量。

实例

  1. # 有序集 mid_test
  2. redis 127.0.0.1:6379> ZADD mid_test 70"Li Lei"
  3. (integer)1
  4. redis 127.0.0.1:6379> ZADD mid_test 70"Han Meimei"
  5. (integer)1
  6. redis 127.0.0.1:6379> ZADD mid_test 99.5"Tom"
  7. (integer)1
  8.  
  9. # 另外一个有序集 fin_test
  10. redis 127.0.0.1:6379> ZADD fin_test 88"Li Lei"
  11. (integer)1
  12. redis 127.0.0.1:6379> ZADD fin_test 75"Han Meimei"
  13. (integer)1
  14. redis 127.0.0.1:6379> ZADD fin_test 99.5"Tom"
  15. (integer)1
  16.  
  17. # 交集
  18. redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
  19. (integer)3
  20.  
  21. # 显示有序集内全部成员及其分数值
  22. redis 127.0.0.1:6379> ZRANGE sum_point 0-1 WITHSCORES
  23. 1)"Han Meimei"
  24. 2)"145"
  25. 3)"Li Lei"
  26. 4)"158"
  27. 5)"Tom"
  28. 6)"199"

 

 

 

Redis Zlexcount 命令


Redis Zlexcount 命令在计算有序集合中指定字典区间内成员数量。

语法

redis Zlexcount 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZLEXCOUNT KEY MIN MAX

可用版本

>= 2.8.9

返回值

指定区间内的成员数量。

实例

  1. redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e
  2. (integer)5
  3. redis 127.0.0.1:6379> ZADD myzset 0 f 0 g
  4. (integer)2
  5. redis 127.0.0.1:6379> ZLEXCOUNT myzset -+
  6. (integer)7
  7. redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f
  8. (integer)5

 

 

Redis Zrange 命令


Redis Zrange 返回有序集中,指定区间内的成员。

其中成员的位置按分数值递增(从小到大)来排序。

具备相同分数值的成员按字典序(lexicographical order )来排列。

若是你须要成员按

值递减(从大到小)来排列,请使用 ZREVRANGE 命令。

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。

你也可使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

语法

redis Zrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]

可用版本

>= 1.2.0

返回值

指定区间内,带有分数值(可选)的有序集成员的列表。

实例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 显示整个有序集成员
  2. 1)"jack"
  3. 2)"3500"
  4. 3)"tom"
  5. 4)"5000"
  6. 5)"boss"
  7. 6)"10086"
  8.  
  9. redis 127.0.0.1:6379> ZRANGE salary 12 WITHSCORES # 显示有序集下标区间 1 至 2 的成员
  10. 1)"tom"
  11. 2)"5000"
  12. 3)"boss"
  13. 4)"10086"
  14.  
  15. redis 127.0.0.1:6379> ZRANGE salary 0200000 WITHSCORES # 测试 end 下标超出最大下标时的状况
  16. 1)"jack"
  17. 2)"3500"
  18. 3)"tom"
  19. 4)"5000"
  20. 5)"boss"
  21. 6)"10086"
  22.  
  23. redis > ZRANGE salary 2000003000000 WITHSCORES # 测试当给定区间不存在于有序集时的状况
  24. (empty list orset)

 

 

Redis Zrangebylex 命令


Redis Zrangebylex 经过字典区间返回有序集合的成员。

语法

redis Zrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZRANGEBYLEX key min max [LIMIT offset count]

可用版本

>= 2.8.9

返回值

指定区间内的元素列表。

实例

  1. redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
  2. (integer)7
  3. redis 127.0.0.1:6379> ZRANGEBYLEX myzset -[c
  4. 1)"a"
  5. 2)"b"
  6. 3)"c"
  7. redis 127.0.0.1:6379> ZRANGEBYLEX myzset -(c
  8. 1)"a"
  9. 2)"b"
  10. redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g
  11. 1)"b"
  12. 2)"c"
  13. 3)"d"
  14. 4)"e"
  15. 5)"f"
  16. redis>

 

 

Redis Zremrangebyrank 命令


Redis Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的全部成员。

语法

redis Zremrangebyrank 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYRANK key start stop

可用版本

>= 2.0.0

返回值

被移除成员的数量。

实例

  1. redis 127.0.0.1:6379> ZADD salary 2000 jack
  2. (integer)1
  3. redis 127.0.0.1:6379> ZADD salary 5000 tom
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD salary 3500 peter
  6. (integer)1
  7.  
  8. redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 01# 移除下标 0 至 1 区间内的成员
  9. (integer)2
  10.  
  11. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 有序集只剩下一个成员
  12. 1)"tom"
  13. 2)"5000"

 

 

Redis Zrank 命令


Redis Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。

语法

redis Zrank 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZRANK key member
可用版本

>= 2.0.0

返回值

若是成员是有序集 key 的成员,返回 member 的排名。 若是成员不是有序集 key 的成员,返回 nil 。

实例
  1. redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 显示全部成员及其 score 值
  2. 1) "peter"
  3. 2) "3500"
  4. 3) "tom"
  5. 4) "4000"
  6. 5) "jack"
  7. 6) "5000"
  8.  
  9. redis 127.0.0.1:6379> ZRANK salary tom # 显示 tom 的薪水排名,第二
  10. (integer) 1

 

 

 

Redis Zrem 命令


Redis Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。

当 key 存在但不是有序集类型时,返回一个错误。

注意: 在 Redis 2.4 版本之前, ZREM 每次只能删除一个元素。

语法

redis Zrem 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZRANK key member

可用版本

>= 1.2.0

返回值

被成功移除的成员的数量,不包括被忽略的成员。

实例

  1. # 测试数据
  2.  
  3. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  4. 1)"bing.com"
  5. 2)"8"
  6. 3)"baidu.com"
  7. 4)"9"
  8. 5)"google.com"
  9. 6)"10"
  10.  
  11.  
  12. # 移除单个元素
  13.  
  14. redis 127.0.0.1:6379> ZREM page_rank google.com
  15. (integer)1
  16.  
  17. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  18. 1)"bing.com"
  19. 2)"8"
  20. 3)"baidu.com"
  21. 4)"9"
  22.  
  23.  
  24. # 移除多个元素
  25.  
  26. redis 127.0.0.1:6379> ZREM page_rank baidu.com bing.com
  27. (integer)2
  28.  
  29. redis 127.0.0.1:6379> ZRANGE page_rank 0-1 WITHSCORES
  30. (empty list orset)
  31.  
  32.  
  33. # 移除不存在元素
  34.  
  35. redis 127.0.0.1:6379> ZREM page_rank non-exists-element
  36. (integer)0

 

 

Redis Zrangebyscore 命令


Redis Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。

具备相同分数值的成员按字典序来排列(该属性是有序集提供的,不须要额外的计算)。

默认状况下,区间的取值使用闭区间 (小于等于或大于等于),你也能够经过给参数前增长 ( 符号来使用可选的开区间 (小于或大于)。

举个例子:

  1. ZRANGEBYSCORE zset (15

返回全部符合条件 1

  1. ZRANGEBYSCORE zset (5(10

则返回全部符合条件 5

语法

redis Zrangebyscore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]

可用版本

>= 1.0.5

返回值

指定区间内,带有分数值(可选)的有序集成员的列表。

实例

  1. redis 127.0.0.1:6379> ZADD salary 2500 jack # 测试数据
  2. (integer)0
  3. redis 127.0.0.1:6379> ZADD salary 5000 tom
  4. (integer)0
  5. redis 127.0.0.1:6379> ZADD salary 12000 peter
  6. (integer)0
  7.  
  8. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf # 显示整个有序集
  9. 1)"jack"
  10. 2)"tom"
  11. 3)"peter"
  12.  
  13. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES # 显示整个有序集及成员的 score 值
  14. 1)"jack"
  15. 2)"2500"
  16. 3)"tom"
  17. 4)"5000"
  18. 5)"peter"
  19. 6)"12000"
  20.  
  21. redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES # 显示工资 <=5000 的全部成员
  22. 1)"jack"
  23. 2)"2500"
  24. 3)"tom"
  25. 4)"5000"
  26.  
  27. redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000400000# 显示工资大于 5000 小于等于 400000 的成员
  28. 1)"peter"

 

 

 

Redis Zremrangebylex 命令


Redis Zremrangebylex 命令用于移除有序集合中给定的字典区间的全部成员。

语法

redis Zremrangebylex命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYLEX key min max

可用版本

>= 2.8.9

返回值

被成功移除的成员的数量,不包括被忽略的成员。

实例

  1. redis 127.0.0.1:6379> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
  2. (integer)5
  3. redis 127.0.0.1:6379> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
  4. (integer)5
  5. redis 127.0.0.1:6379> ZRANGE myzset 0-1
  6. 1)"ALPHA"
  7. 2)"aaaa"
  8. 3)"alpha"
  9. 4)"b"
  10. 5)"c"
  11. 6)"d"
  12. 7)"e"
  13. 8)"foo"
  14. 9)"zap"
  15. 10)"zip"
  16. redis 127.0.0.1:6379> ZREMRANGEBYLEX myzset [alpha [omega
  17. (integer)6
  18. redis 127.0.0.1:6379> ZRANGE myzset 0-1
  19. 1)"ALPHA"
  20. 2)"aaaa"
  21. 3)"zap"
  22. 4)"zip"
  23. redis>

 

 

Redis Zremrangebyscore 命令


Redis Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的全部成员。

语法

redis Zremrangebyscore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREMRANGEBYSCORE key min max
可用版本

>= 1.2.0

返回值

被移除成员的数量。

实例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 显示有序集内全部成员及其 score 值
  2. 1)"tom"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREMRANGEBYSCORE salary 15003500# 移除全部薪水在 1500 到 3500 内的员工
  10. (integer)2
  11.  
  12. redis> ZRANGE salary 0-1 WITHSCORES # 剩下的有序集成员
  13. 1)"jack"
  14. 2)"5000"

 

 

Redis Zrevrange 命令


Redis Zrevrange 命令返回有序集中,指定区间内的成员。

其中成员的位置按分数值递减(从大到小)来排列。

具备相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。

除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其余方面和 ZRANGE 命令同样。

语法

redis Zrevrange 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREVRANGE key start stop [WITHSCORES]

可用版本

>= 1.2.0

返回值

指定区间内,带有分数值(可选)的有序集成员的列表。

实例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 递增排列
  2. 1)"peter"
  3. 2)"3500"
  4. 3)"tom"
  5. 4)"4000"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREVRANGE salary 0-1 WITHSCORES # 递减排列
  10. 1)"jack"
  11. 2)"5000"
  12. 3)"tom"
  13. 4)"4000"
  14. 5)"peter"
  15. 6)"3500"

 

 

Redis Zrevrangebyscore 命令


Redis Zrevrangebyscore 返回有序集中指定分数区间内的全部的成员。有序集成员按分数值递减(从大到小)的次序排列。

具备相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。

除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其余方面和 ZRANGEBYSCORE 命令同样。

语法

redis Zrevrangebyscore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREVRANGEBYSCORE key max min [WITHSCORES][LIMIT offset count]

可用版本

>= 2.2.0

返回值

指定区间内,带有分数值(可选)的有序集成员的列表。

实例

  1. redis 127.0.0.1:6379> ZADD salary 10086 jack
  2. (integer)1
  3. redis > ZADD salary 5000 tom
  4. (integer)1
  5. redis 127.0.0.1:6379> ZADD salary 7500 peter
  6. (integer)1
  7. redis 127.0.0.1:6379> ZADD salary 3500 joe
  8. (integer)1
  9.  
  10. redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf # 逆序排列全部成员
  11. 1)"jack"
  12. 2)"peter"
  13. 3)"tom"
  14. 4)"joe"
  15.  
  16. redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary 100002000# 逆序排列薪水介于 10000 和 2000 之间的成员
  17. 1)"peter"
  18. 2)"tom"
  19. 3)"joe"

 

Redis Zrevrank 命令


Redis Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。

排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。

使用 ZRANK 命令能够得到成员按分数值递增(从小到大)排列的排名。

语法

redis Zrevrank 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZREVRANK key member

可用版本

>= 2.2.0

返回值

若是成员是有序集 key 的成员,返回成员的排名。 若是成员不是有序集 key 的成员,返回 nil 。

实例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 测试数据
  2. 1)"jack"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"tom"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZREVRANK salary peter # peter 的工资排第二
  10. (integer)1
  11.  
  12. redis 127.0.0.1:6379> ZREVRANK salary tom # tom 的工资最高
  13. (integer)0

 



 

Redis Zscore 命令


Redis Zscore 命令返回有序集中,成员的分数值。 若是成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。

语法

redis Zscore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZSCORE key member

可用版本

>= 1.2.0

返回值

成员的分数值,以字符串形式表示。

实例

  1. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES # 测试数据
  2. 1)"tom"
  3. 2)"2000"
  4. 3)"peter"
  5. 4)"3500"
  6. 5)"jack"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZSCORE salary peter # 注意返回值是字符串
  10. "3500"

 

 

 

Redis Zunionstore 命令


Redis Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。

默认状况下,结果集中某个成员的分数值是全部给定集下该成员分数值之和 。

语法

redis Zunionstore 命令基本语法以下:

  1. redis 127.0.0.1:6379> ZUNIONSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]

可用版本

>= 2.0.0

返回值

保存到 destination 的结果集的成员数量。

实例

  1. redis 127.0.0.1:6379> ZRANGE programmer 0-1 WITHSCORES
  2. 1)"peter"
  3. 2)"2000"
  4. 3)"jack"
  5. 4)"3500"
  6. 5)"tom"
  7. 6)"5000"
  8.  
  9. redis 127.0.0.1:6379> ZRANGE manager 0-1 WITHSCORES
  10. 1)"herry"
  11. 2)"2000"
  12. 3)"mary"
  13. 4)"3500"
  14. 5)"bob"
  15. 6)"4000"
  16.  
  17. redis 127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 13# 公司决定加薪。。。除了程序员。。。
  18. (integer)6
  19.  
  20. redis 127.0.0.1:6379> ZRANGE salary 0-1 WITHSCORES
  21. 1)"peter"
  22. 2)"2000"
  23. 3)"jack"
  24. 4)"3500"
  25. 5)"tom"
  26. 6)"5000"
  27. 7)"herry"
  28. 8)"6000"
  29. 9)"mary"
  30. 10)"10500"
  31. 11)"bob"
  32. 12)"12000"

 

Redis Zscan 命令


Redis Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

语法

redis Zscan 命令基本语法以下:

  1. redis 127.0.0.1:6379> redis 127.0.0.1:6379> ZSCAN key cursor [MATCH pattern][COUNT count]

可用版本

>= 2.8.0

返回值

返回的每一个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。

 



Redis HyperLogLog 命令

下表列出了 redis HyperLogLog 的基本命令:

序号 命令及描述
1 PFADD key element [element ...] 
添加指定元素到 HyperLogLog 中。
2 PFCOUNT key [key ...] 
返回给定 HyperLogLog 的基数估算值。
3 PFMERGE destkey sourcekey [sourcekey ...] 
将多个 HyperLogLog 合并为一个 HyperLogLog

Redis HyperLogLog


Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来作基数统计的算法,HyperLogLog 的优势是,在输入元素的数量或者体积很是很是大时,计算基数所需的空间老是固定 的、而且是很小的。

在 Redis 里面,每一个 HyperLogLog 键只须要花费 12 KB 内存,就能够计算接近 2^64 个不一样元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合造成鲜明对比。

可是,由于 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素自己,因此 HyperLogLog 不能像集合那样,返回输入的各个元素。


什么是基数?

好比数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在偏差可接受的范围内,快速计算基数。


实例

如下实例演示了 HyperLogLog 的工做过程:

  1. redis 127.0.0.1:6379> PFADD w3ckey "redis"
  2.  
  3. 1)(integer)1
  4.  
  5. redis 127.0.0.1:6379> PFADD w3ckey "mongodb"
  6.  
  7. 1)(integer)1
  8.  
  9. redis 127.0.0.1:6379> PFADD w3ckey "mysql"
  10.  
  11. 1)(integer)1
  12.  
  13. redis 127.0.0.1:6379> PFCOUNT w3ckey
  14.  
  15. (integer)3

 

Redis Debug Segfault 命令


Redis Debug Segfault 命令执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。

语法

redis Debug Segfault 命令基本语法以下:

  1. redis 127.0.0.1:6379> DEBUG SEGFAULT

可用版本

>= 1.0.0

返回值

实例

  1. redis 127.0.0.1:6379> DEBUG SEGFAULT
  2. Couldnot connect to Redis at 127.0.0.1:6379:Connection refused
  3. not connected>

 

 

Redis Pfcount 命令


Redis Pfcount 命令返回给定 HyperLogLog 的基数估算值。

语法

redis Pfcount 命令基本语法以下:

  1. redis 127.0.0.1:6379> PFCOUNT key [key ...]

可用版本

>= 2.8.9

返回值

整数,返回给定 HyperLogLog 的基数值,若是多个 HyperLogLog 则返回基数估值之和。

实例

  1. redis 127.0.0.1:6379> PFADD hll foo bar zap
  2. (integer)1
  3. redis 127.0.0.1:6379> PFADD hll zap zap zap
  4. (integer)0
  5. redis 127.0.0.1:6379> PFADD hll foo bar
  6. (integer)0
  7. redis 127.0.0.1:6379> PFCOUNT hll
  8. (integer)3
  9. redis 127.0.0.1:6379> PFADD some-other-hll 123
  10. (integer)1
  11. redis 127.0.0.1:6379> PFCOUNT hll some-other-hll
  12. (integer)6
  13. redis>

 

 

Redis Pgmerge 命令


Redis Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是经过对全部 给定 HyperLogLog 进行并集计算得出的。

语法

redis Pgmerge 命令基本语法以下:

  1. redis 127.0.0.1:6379> PFMERGE destkey sourcekey [sourcekey ...]

可用版本

>= 2.8.9

返回值

返回 OK。

实例

  1. redis 127.0.0.1:6379> PFADD hll1 foo bar zap a
  2. (integer)1
  3. redis 127.0.0.1:6379> PFADD hll2 a b c foo
  4. (integer)1
  5. redis 127.0.0.1:6379> PFMERGE hll3 hll1 hll2
  6. OK
  7. redis 127.0.0.1:6379> PFCOUNT hll3
  8. (integer)6
  9. redis>

 

 

Redis 发布订阅命令

下表列出了 redis 发布订阅经常使用命令:

序号 命令及描述
1 PSUBSCRIBE pattern [pattern ...] 
订阅一个或多个符合给定模式的频道。
2 PUBSUB subcommand [argument [argument ...]] 
查看订阅与发布系统状态。
3 PUBLISH channel message 
将信息发送到指定的频道。
4 PUNSUBSCRIBE [pattern [pattern ...]] 
退订全部给定模式的频道。
5 SUBSCRIBE channel [channel ...] 
订阅给定的一个或多个频道的信息。
6 UNSUBSCRIBE [channel [channel ...]] 
指退订给定的频道。

 

 

Redis 发布订阅


Redis 发布订阅(pub/sub)是一种消息通讯模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端能够订阅任意数量的频道。

下图展现了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

pubsub1

当有新消息经过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

pubsub2


实例

如下实例演示了发布订阅是如何工做的。在咱们实例中咱们建立了订阅频道名为 redisChat:

  1. redis 127.0.0.1:6379> SUBSCRIBE redisChat
  2.  
  3. Reading messages...(press Ctrl-C to quit)
  4. 1)"subscribe"
  5. 2)"redisChat"
  6. 3)(integer)1

如今,咱们先从新开启个 redis 客户端,而后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。

  1. redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
  2.  
  3. (integer)1
  4.  
  5. redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by apiref.com"
  6.  
  7. (integer)1
  8.  
  9. # 订阅者的客户端会显示以下消息
  10. 1)"message"
  11. 2)"redisChat"
  12. 3)"Redis is a great caching technique"
  13. 1)"message"
  14. 2)"redisChat"
  15. 3)"Learn redis by apiref.com"

 

Redis Psubscribe 命令


Redis Psubscribe 命令订阅一个或多个符合给定模式的频道。

每一个模式以 * 做为匹配符,好比 it* 匹配全部以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配全部以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。

语法

redis Psubscribe 命令基本语法以下:

  1. redis 127.0.0.1:6379> PSUBSCRIBE pattern [pattern ...]

可用版本

>= 2.0.0

返回值

接收到的信息。

实例

  1. redis 127.0.0.1:6379> PSUBSCRIBE mychannel
  2. Reading messages...(press Ctrl-C to quit)
  3. 1)"psubscribe"
  4. 2)"mychannel"
  5. 3)(integer)1

 

 

Redis Pubsub 命令


Redis Pubsub 命令用于查看订阅与发布系统状态,它由数个不一样格式的子命令组成。

语法

redis Pubsub 命令基本语法以下:

  1. redis 127.0.0.1:6379> PUBSUB <subcommand>[argument [argument ...]]

可用版本

>= 2.8.0

返回值

由活跃频道组成的列表。

实例

  1. redis 127.0.0.1:6379> PUBSUB CHANNELS
  2. (empty list orset)

 

 

Redis Publish 命令


Redis Publish 命令用于将信息发送到指定的频道。

语法

redis Publish 命令基本语法以下:

  1. redis 127.0.0.1:6379> PUBLISH channel message

可用版本

>= 2.0.0

返回值

接收到信息的订阅者数量。

实例

  1. redis 127.0.0.1:6379> PUBLISH mychannel "hello, i m here"
  2. (integer)1

 

 

Redis Punsubscribe 命令


Redis Punsubscribe 命令用于退订全部给定模式的频道。

语法

redis Punsubscribe 命令基本语法以下:

  1. redis 127.0.0.1:6379> PUNSUBSCRIBE [pattern [pattern ...]]

可用版本

>= 2.0.0

返回值

这个命令在不一样的客户端中有不一样的表现。

实例

  1. redis 127.0.0.1:6379> PUNSUBSCRIBE mychannel
  2. 1)"punsubscribe"
  3. 2)"a"
  4. 3)(integer)1

 

 

Redis Subscribe 命令


Redis Subscribe 命令用于订阅给定的一个或多个频道的信息。。

语法

redis Subscribe 命令基本语法以下:

  1. redis 127.0.0.1:6379> SUBSCRIBE channel [channel ...]

可用版本

>= 2.0.0

返回值

接收到的信息

实例

  1. redis 127.0.0.1:6379> SUBSCRIBE mychannel
  2. Reading messages...(press Ctrl-C to quit)
  3. 1)"subscribe"
  4. 2)"mychannel"
  5. 3)(integer)1
  6. 1)"message"
  7. 2)"mychannel"
  8. 3)"a"

 

 

 

Redis Unsubscribe 命令


Redis Unsubscribe 命令用于退订给定的一个或多个频道的信息。

语法

redis Unsubscribe 命令基本语法以下:

  1. redis 127.0.0.1:6379> UNSUBSCRIBE channel [channel ...]

可用版本

>= 2.0.0

返回值

这个命令在不一样的客户端中有不一样的表现。

实例

  1. redis 127.0.0.1:6379> UNSUBSCRIBE mychannel
  2. 1)"unsubscribe"
  3. 2)"a"
  4. 3)(integer)0

 

 

Redis 事务命令

下表列出了 redis 事务的相关命令:

序号 命令及描述
1 DISCARD 
取消事务,放弃执行事务块内的全部命令。
2 EXEC 
执行全部事务块内的命令。
3 MULTI 
标记一个事务块的开始。
4 UNWATCH 
取消 WATCH 命令对全部 key 的监视。
5 WATCH key [key ...] 
监视一个(或多个) key ,若是在事务执行以前这个(或这些) key 被其余命令所改动,那么事务将被打断。

Redis 事务


Redis 事务能够一次执行多个命令, 而且带有如下两个重要的保证:

  • 事务是一个单独的隔离操做:事务中的全部命令都会序列化、按顺序地执行。事务在执行的过程当中,不会被其余客户端发送来的命令请求所打断。
  • 事务是一个原子操做:事务中的命令要么所有被执行,要么所有都不执行。

一个事务从开始到执行会经历如下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

实例

如下是一个事务的例子, 它先以 MULTI 开始一个事务, 而后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的全部命令:

  1. redis 127.0.0.1:6379> MULTI
  2. OK
  3.  
  4. redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> GET book-name
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> SADD tag "C++""Programming""Mastering Series"
  11. QUEUED
  12.  
  13. redis 127.0.0.1:6379> SMEMBERS tag
  14. QUEUED
  15.  
  16. redis 127.0.0.1:6379> EXEC
  17. 1) OK
  18. 2)"Mastering C++ in 21 days"
  19. 3)(integer)3
  20. 4)1)"Mastering Series"
  21. 2)"C++"
  22. 3)"Programming"

 

Redis Discard 命令


Redis Discard 命令用于取消事务,放弃执行事务块内的全部命令。

语法

redis Discard 命令基本语法以下:

  1. redis 127.0.0.1:6379> DISCARD

可用版本

>= 2.0.0

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> MULTI
  2. OK
  3.  
  4. redis 127.0.0.1:6379> PING
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> SET greeting "hello"
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> DISCARD
  11. OK

 

 

Redis Exec 命令


Redis Exec 命令用于执行全部事务块内的命令。

语法

redis Exec 命令基本语法以下:

  1. redis 127.0.0.1:6379> Exec

可用版本

>= 1.2.0

返回值

事务块内全部命令的返回值,按命令执行的前后顺序排列。 当操做被打断时,返回空值 nil 。

实例

  1. # 事务被成功执行
  2.  
  3. redis 127.0.0.1:6379> MULTI
  4. OK
  5.  
  6. redis 127.0.0.1:6379> INCR user_id
  7. QUEUED
  8.  
  9. redis 127.0.0.1:6379> INCR user_id
  10. QUEUED
  11.  
  12. redis 127.0.0.1:6379> INCR user_id
  13. QUEUED
  14.  
  15. redis 127.0.0.1:6379> PING
  16. QUEUED
  17.  
  18. redis 127.0.0.1:6379> EXEC
  19. 1) (integer) 1
  20. 2) (integer) 2
  21. 3) (integer) 3
  22. 4) PONG
  23.  
  24.  
  25. # 监视 key ,且事务成功执行
  26.  
  27. redis 127.0.0.1:6379> WATCH lock lock_times
  28. OK
  29.  
  30. redis 127.0.0.1:6379> MULTI
  31. OK
  32.  
  33. redis 127.0.0.1:6379> SET lock "huangz"
  34. QUEUED
  35.  
  36. redis 127.0.0.1:6379> INCR lock_times
  37. QUEUED
  38.  
  39. redis 127.0.0.1:6379> EXEC
  40. 1) OK
  41. 2) (integer) 1
  42.  
  43.  
  44. # 监视 key ,且事务被打断
  45.  
  46. redis 127.0.0.1:6379> WATCH lock lock_times
  47. OK
  48.  
  49. redis 127.0.0.1:6379> MULTI
  50. OK
  51.  
  52. redis 127.0.0.1:6379> SET lock "joe" # 就在这时,另外一个客户端修改了 lock_times 的值
  53. QUEUED
  54.  
  55. redis 127.0.0.1:6379> INCR lock_times
  56. QUEUED
  57.  
  58. redis 127.0.0.1:6379> EXEC # 由于 lock_times 被修改, joe 的事务执行失败
  59. (nil)
  60.  

 

 

Redis Multi 命令


Redis Multi 命令用于标记一个事务块的开始。

事务块内的多条命令会按照前后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

语法

redis Multi 命令基本语法以下:

  1. redis 127.0.0.1:6379> Multi

可用版本

>= 1.2.0

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> MULTI # 标记事务开始
  2. OK
  3.  
  4. redis 127.0.0.1:6379> INCR user_id # 多条命令按顺序入队
  5. QUEUED
  6.  
  7. redis 127.0.0.1:6379> INCR user_id
  8. QUEUED
  9.  
  10. redis 127.0.0.1:6379> INCR user_id
  11. QUEUED
  12.  
  13. redis 127.0.0.1:6379> PING
  14. QUEUED
  15.  
  16. redis 127.0.0.1:6379> EXEC # 执行
  17. 1) (integer) 1
  18. 2) (integer) 2
  19. 3) (integer) 3
  20. 4) PONG
  21.  

 

 

 

 

Redis Unwatch 命令


Redis Unwatch 命令用于取消 WATCH 命令对全部 key 的监视。

语法

redis Unwatch 命令基本语法以下:

  1. redis 127.0.0.1:6379> UNWATCH

可用版本

>= 2.2.0

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> WATCH lock lock_times
  2. OK
  3.  
  4. redis 127.0.0.1:6379> UNWATCH
  5. OK
  6.  

 

 

 

Redis Watch 命令


Redis Watch 命令用于监视一个(或多个) key ,若是在事务执行以前这个(或这些) key 被其余命令所改动,那么事务将被打断

语法

redis Watch 命令基本语法以下:

  1. redis 127.0.0.1:6379> Watch

可用版本

>= 2.2.0

返回值

老是返回 OK 。

实例

  1. redis> WATCH lock lock_times
  2. OK
  3.  

 

 

 

 

 

 


Redis 脚本命令

下表列出了 redis 脚本经常使用命令:

序号 命令及描述
1 EVAL script numkeys key [key ...] arg [arg ...] 
执行 Lua 脚本。
2 EVALSHA sha1 numkeys key [key ...] arg [arg ...] 
执行 Lua 脚本。
3 SCRIPT EXISTS script [script ...] 
查看指定的脚本是否已经被保存在缓存当中。
4 SCRIPT FLUSH 
从脚本缓存中移除全部脚本。
5 SCRIPT KILL 
杀死当前正在运行的 Lua 脚本。
6 SCRIPT LOAD script 
将脚本 script 添加到脚本缓存中,但并不当即执行这个脚本。

 

Redis 脚本


Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本经过内嵌支持 Lua 环境。执行脚本的经常使用命令为 EVAL。

语法

Eval 命令的基本语法以下:

  1. redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

实例

如下实例演示了 redis 脚本工做过程:

  1. redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
  2.  
  3. 1) "key1"
  4. 2) "key2"
  5. 3) "first"
  6. 4) "second"

 

 

 

 

Redis Eval 命令


Redis Eval 命令使用 Lua 解释器执行脚本。

语法

redis Eval 命令基本语法以下:

  1. redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

参数说明:

  • script: 参数是一段 Lua 5.1 脚本程序。脚本没必要(也不该该)定义为一个 Lua 函数。
  • numkeys: 用于指定键名参数的个数。
  • key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数能够在 Lua 中经过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
  • arg [arg ...]: 附加参数,在 Lua 中经过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量相似( ARGV[1] 、 ARGV[2] ,诸如此类)。

可用版本

>= 2.6.0

实例

  1. redis 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
  2. 1) "key1"
  3. 2) "key2"
  4. 3) "first"
  5. 4) "second"
  6.  

 

 

Redis Evalsha 命令


Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。

语法

redis Evalsha 命令基本语法以下:

  1. redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

参数说明:

  • script: 参数是一段 Lua 5.1 脚本程序。脚本没必要(也不该该)定义为一个 Lua 函数。
  • numkeys: 用于指定键名参数的个数。
  • key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数能够在 Lua 中经过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
  • arg [arg ...]: 附加参数,在 Lua 中经过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量相似( ARGV[1] 、 ARGV[2] ,诸如此类)。

可用版本

>= 2.6.0

实例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"
  2. "232fd51614574cf0867b83d384a5e898cfd24e5a"
  3.  
  4. redis 127.0.0.1:6379> EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
  5. "hello moto"
  6.  

 

 

Redis Script Exists 命令


Redis Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中。

语法

redis Script Exists 命令基本语法以下:

  1. redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

可用版本

>= 2.6.0

返回值

一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。

列表中的元素和给定的 SHA1 校验和保持对应关系,好比列表的第三个元素的值就表示第三个 SHA1 校验和所指定的脚本在缓存中的状态。

实例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'" # 载入一个脚本
  2. "232fd51614574cf0867b83d384a5e898cfd24e5a"
  3.  
  4. redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
  5. 1) (integer) 1
  6.  
  7. redis 127.0.0.1:6379> SCRIPT FLUSH # 清空缓存
  8. OK
  9.  
  10. redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
  11. 1) (integer) 0
  12.  

 

 

Redis Script Flush 命令


Redis Script Flush 命令用于清除全部 Lua 脚本缓存。

语法

redis Script Flush 命令基本语法以下:

  1. redis 127.0.0.1:6379> SCRIPT FLUSH

可用版本

>= 2.6.0

返回值

老是返回 OK

实例

  1. redis 127.0.0.1:6379> SCRIPT FLUSH
  2. OK
  3.  

 

 

 

Redis Script kill 命令


Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操做时,这个命令才生效。

这个命令主要用于终止运行时间过长的脚本,好比一个由于 BUG 而发生无限循环的脚本。

SCRIPT KILL 执行以后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误做为返回值。

语法

redis Script kill 命令基本语法以下:

  1. redis 127.0.0.1:6379> SCRIPT KILL

可用版本

>= 2.6.0

返回值

老是返回 OK

实例

  1. redis 127.0.0.1:6379> SCRIPT KILL
  2. OK
  3.  

 

 

Redis Script Load 命令


Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不当即执行这个脚本。

EVAL 命令也会将脚本添加到脚本缓存中,可是它会当即对输入的脚本进行求值。

若是给定的脚本已经在缓存里面了,那么不执行任何操做。

在脚本被加入到缓存以后,经过 EVALSHA 命令,可使用脚本的 SHA1 校验和来调用这个脚本。

脚本能够在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。

关于使用 Redis 对 Lua 脚本进行求值的更多信息,请参见 EVAL 命令。

语法

redis Script Load 命令基本语法以下:

  1. redis 127.0.0.1:6379> SCRIPT LOAD script

可用版本

>= 2.6.0

返回值

给定脚本的 SHA1 校验和

实例

  1. redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
  2. "e0e1f9fabfc9d4800c877a703b823ac0578ff8db"
  3.  

 

 

 


Redis 链接命令

下表列出了 redis 链接的基本命令:

 

序号 命令及描述
1 AUTH password 
验证密码是否正确
2 ECHO message 
打印字符串
3 PING 
查看服务是否运行
4 QUIT 
关闭当前链接
5 SELECT index 
切换到指定的数据库

 

 

Redis 链接


Redis 链接命令主要是用于链接 redis 服务。

实例

如下实例演示了客户端如何经过密码验证链接到 redis 服务,并检测服务是否在运行:

  1. redis 127.0.0.1:6379> AUTH "password"
  2. OK
  3. redis 127.0.0.1:6379> PING
  4. PONG

 

 

 

Redis Auth 命令


Redis Auth 命令用于检测给定的密码和配置文件中的密码是否相符。

语法

redis Auth 命令基本语法以下:

  1. redis 127.0.0.1:6379> AUTH PASSWORD

可用版本

>= 1.0.0

返回值

密码匹配时返回 OK ,不然返回一个错误。

实例

  1. redis 127.0.0.1:6379> AUTH PASSWORD
  2. (error) ERR Client sent AUTH, but no password is set
  3. redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
  4. OK
  5. redis 127.0.0.1:6379> AUTH mypass
  6. Ok
  7.  

 

Redis Echo 命令


Redis Echo 命令用于打印给定的字符串。

语法

redis Echo 命令基本语法以下:

  1. redis 127.0.0.1:6379> ECHO message

可用版本

>= 1.0.0

返回值

返回字符串自己。

实例

  1. redis 127.0.0.1:6379> ECHO "Hello World"
  2. "Hello World"
  3.  

 

 

Redis Ping 命令


Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,若是服务器运做正常的话,会返回一个 PONG 。

一般用于测试与服务器的链接是否仍然生效,或者用于测量延迟值。

语法

redis Ping 命令基本语法以下:

  1. redis 127.0.0.1:6379> PING

可用版本

>= 1.0.0

返回值

若是链接正常就返回一个 PONG ,不然返回一个链接错误。

实例

  1. # 客户端和服务器链接正常
  2.  
  3. redis 127.0.0.1:6379> PING
  4. PONG
  5.  
  6. # 客户端和服务器链接不正常(网络不正常或服务器未能正常运行)
  7.  
  8. redis 127.0.0.1:6379> PING
  9. Could not connect to Redis at 127.0.0.1:6379: Connection refused
  10.  

 

 

Redis Quit 命令


Redis Quit 命令用于关闭与当前客户端与redis服务的链接。

一旦全部等待中的回复(若是有的话)顺利写入到客户端,链接就会被关闭。

语法

redis Quit 命令基本语法以下:

  1. redis 127.0.0.1:6379> QUIT

可用版本

>= 1.0.0

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> QUIT
  2. OK
  3.  

 

 

Redis Select 命令


Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 做为起始索引值。

语法

redis Select 命令基本语法以下:

  1. redis 127.0.0.1:6379> SELECT index

可用版本

>= 1.0.0

返回值

老是返回 OK 。

实例

  1. redis 127.0.0.1:6379> SET db_number 0 # 默认使用 0 号数据库
  2. OK
  3.  
  4. redis 127.0.0.1:6379> SELECT 1 # 使用 1 号数据库
  5. OK
  6.  
  7. redis 127.0.0.1:6379[1]> GET db_number # 已经切换到 1 号数据库,注意 Redis 如今的命令提示符多了个 [1]
  8. (nil)
  9.  
  10. redis 127.0.0.1:6379[1]> SET db_number 1
  11. OK
  12.  
  13. redis 127.0.0.1:6379[1]> GET db_number
  14. "1"
  15.  
  16. redis 127.0.0.1:6379[1]> SELECT 3 # 再切换到 3 号数据库
  17. OK
  18.  
  19. redis 127.0.0.1:6379[3]> # 提示符从 [1] 改变成了 [3]
  20.  

 

 

Redis 服务器命令

下表列出了 redis 服务器的相关命令:

序号 命令及描述
1 BGREWRITEAOF 
异步执行一个 AOF(AppendOnly File) 文件重写操做
2 BGSAVE 
在后台异步保存当前数据库的数据到磁盘
3 CLIENT KILL [ip:port] [ID client-id] 
关闭客户端链接
4 CLIENT LIST 
获取链接到服务器的客户端链接列表
5 CLIENT GETNAME 
获取链接的名称
6 CLIENT PAUSE timeout 
在指定时间内终止运行来自客户端的命令
7 CLIENT SETNAME connection-name 
设置当前链接的名称
8 CLUSTER SLOTS 
获取集群节点的映射数组
9 COMMAND 
获取 Redis 命令详情数组
10 COMMAND COUNT 
获取 Redis 命令总数
11 COMMAND GETKEYS 
获取给定命令的全部键
12 TIME 
返回当前服务器时间
13 COMMAND INFO command-name [command-name ...] 
获取指定 Redis 命令描述的数组
14 CONFIG GET parameter 
获取指定配置参数的值
15 CONFIG REWRITE 
对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
16 CONFIG SET parameter value 
修改 redis 配置参数,无需重启
17 CONFIG RESETSTAT 
重置 INFO 命令中的某些统计数据
18 DBSIZE 
返回当前数据库的 key 的数量
19 DEBUG OBJECT key 
获取 key 的调试信息
20 DEBUG SEGFAULT 
让 Redis 服务崩溃
21 FLUSHALL 
删除全部数据库的全部key
22 FLUSHDB 
删除当前数据库的全部key
23 INFO [section] 
获取 Redis 服务器的各类信息和统计数值
24 LASTSAVE 
返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
25 MONITOR 
实时打印出 Redis 服务器接收到的命令,调试用
26 ROLE 
返回主从实例所属的角色
27 SAVE 
异步保存数据到硬盘
28 SHUTDOWN [NOSAVE] [SAVE] 
异步保存数据到硬盘,并关闭服务器
29 SLAVEOF host port 
将当前服务器转变为指定服务器的从属服务器(slave server)
30 SLOWLOG subcommand [argument] 
管理 redis 的慢日志
31 SYNC 
用于复制功能(replication)的内部命令

Redis 服务器

Redis 服务器命令主要是用于管理 redis 服务。

实例

如下实例演示了如何获取 redis 服务器的统计信息:

  1. redis 127.0.0.1:6379> INFO
  2.  
  3. # Server
  4. redis_version:2.8.13
  5. redis_git_sha1:00000000
  6. redis_git_dirty:0
  7. redis_build_id:c2238b38b1edb0e2
  8. redis_mode:standalone
  9. os:Linux 3.5.0-48-generic x86_64
  10. arch_bits:64
  11. multiplexing_api:epoll
  12. gcc_version:4.7.2
  13. process_id:3856
  14. run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
  15. tcp_port:6379
  16. uptime_in_seconds:11554
  17. uptime_in_days:0
  18. hz:10
  19. lru_clock:16651447
  20. config_file:
  21.  
  22. # Clients
  23. connected_clients:1
  24. client-longest_output_list:0
  25. client-biggest_input_buf:0
  26. blocked_clients:0
  27.  
  28. # Memory
  29. used_memory:589016
  30. used_memory_human:575.21K
  31. used_memory_rss:2461696
  32. used_memory_peak:667312
  33. used_memory_peak_human:651.67K
  34. used_memory_lua:33792
  35. mem_fragmentation_ratio:4.18
  36. mem_allocator:jemalloc-3.6.0
  37.  
  38. # Persistence
  39. loading:0
  40. rdb_changes_since_last_save:3
  41. rdb_bgsave_in_progress:0
  42. rdb_last_save_time:1409158561
  43. rdb_last_bgsave_status:ok
  44. rdb_last_bgsave_time_sec:0
  45. rdb_current_bgsave_time_sec:-1
  46. aof_enabled:0
  47. aof_rewrite_in_progress:0
  48. aof_rewrite_scheduled:0
  49. aof_last_rewrite_time_sec:-1
  50. aof_current_rewrite_time_sec:-1
  51. aof_last_bgrewrite_status:ok
  52. aof_last_write_status:ok
  53.  
  54. # Stats
  55. total_connections_received:24
  56. total_commands_processed:294
  57. instantaneous_ops_per_sec:0
  58. rejected_connections:0
  59. sync_full:0
  60. sync_partial_ok:0
  61. sync_partial_err:0
  62. expired_keys:0
  63. evicted_keys:0
  64. keyspace_hits:41
  65. keyspace_misses:82
  66. pubsub_channels:0
  67. pubsub_patterns:0
  68. latest_fork_usec:264
  69.  
  70. # Replication
  71. role:master
  72. connected_slaves:0
  73. master_repl_offset:0
  74. repl_backlog_active:0
  75. repl_backlog_size:1048576
  76. repl_backlog_first_byte_offset:0
  77. repl_backlog_histlen:0
  78.  
  79. # CPU
  80. used_cpu_sys:10.49
  81. used_cpu_user:4.96
  82. used_cpu_sys_children:0.00
  83. used_cpu_user_children:0.01
  84.  
  85. # Keyspace
  86. db0:keys=94,expires=1,avg_ttl=41638810
  87. db1:keys=1,expires=0,avg_ttl=0
  88. db3:keys=1,expires=0,avg_ttl=0

 

 

 

 

 

 

 

 


为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,将来可期
转载请标注出处!
 
 
 
 

一、要安装Redis,首先要获取安装包。Windows的Redis安装包须要到如下GitHub连接找到。连接:https://github.com/MSOpenTech/redis。打开网站后,找到Release,点击前往下载页面。

 

二、在下载网页中,找到最后发行的版本(此处是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,点击下载。这里说明一下,第一个是msi微软格式的安装包,第二个是压缩包。

三、双击刚下载好的msi格式的安装包(Redis-x64-3.2.100.msi)开始安装。

四、选择“赞成协议”,点击下一步继续。

五、选择“添加Redis目录到环境变量PATH中”,这样方便系统自动识别Redis执行文件在哪里。

六、端口号可保持默认的6379,并选择防火墙例外,从而保证外部能够正常访问Redis服务。

七、设定最大值为100M。做为实验和学习,100M足够了。

八、点击安装后,正式的安装过程开始。稍等一会便可完成。

九、安装完毕后,须要先作一些设定工做,以便服务启动后能正常运行。使用文本编辑器,这里使用Notepad++,打开Redis服务配置文件。注意:不要找错了,一般为redis.windows-service.conf,而不是redis.windows.conf。后者是以非系统服务方式启动程序使用的配置文件。

十、找到含有requirepass字样的地方,追加一行,输入requirepass 12345。这是访问Redis时所需的密码,通常测试状况下能够不用设定密码。不过,即便是做为本地访问,也建议设定一个密码。此处以简单的12345来演示。

十一、点击“开始”>右击“计算机”>选择“管理”。在左侧栏中依次找到并点击“计算机管理(本地)”>服务和应用程序>服务。再在右侧找到Redis名称的服务,查看启动状况。如未启动,则手动启动之。正常状况下,服务应该正常启动并运行了。

十二、最后来测试一下Redis是否正常提供服务。进入Redis的目录,cd C:\Program Files\Redis。输入redis-cli并回车。(redis-cli是客户端程序)如图正常提示进入,并显示正确端口号,则表示服务已经启动。

 
1三、使用服务前须要先经过密码验证。输入“auth 12345”并回车(12345是以前设定的密码)。返回提示OK表示验证经过。
1四、实际测试一下读写。输入set mykey1 "I love you all!”并回车,用来保存一个键值。再输入get mykey1,获取刚才保存的键值。
1五、注意事项
  • 1.Windows使用的这个Redis是64位版本的,32位操做系统的同窗就不要折腾了。
  • 2.做为服务运行的Redis配置文件,一般为redis.windows-service.conf,而不是redis.windows.conf。当心不要选错了。
相关文章
相关标签/搜索