REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵照BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它一般被称为数据结构服务器,由于值(value)能够是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。html
下载地址:https://github.com/dmajkic/redis/downloads。node
下载到的Redis支持32bit和64bit。根据本身实际状况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reidspython
打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。mysql
若是想方便的话,能够把redis的路径加到系统的环境变量里,这样就免得再输路径了,后面的那个redis.conf能够省略,若是省略,会启用默认的。输入以后,会显示以下界面:git
这时候另启一个cmd窗口,原来的不要关闭,否则就没法访问服务端了。程序员
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。github
设置键值对 set myKey abcweb
取出键值对 get myKeyredis
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。当心不要选错了。
下载地址:http://redis.io/download,下载最新文档版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
注意这种方式启动redis 使用的是默认配置。也能够经过启动参数告诉redis使用指定配置文件使用下面命令启动。
redis.conf是一个默认的配置文件。咱们能够根据须要使用本身的配置文件。
启动redis服务进程后,就可使用测试客户端程序redis-cli和redis服务交互了。 好比:
在 Ubuntu 系统安装 Redi 可使用如下命令:
以上命令将打开如下终端:
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。如今咱们输入 PING 命令。
以上说明咱们已经成功安装了redis。
Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。
你能够经过 CONFIG 命令查看或设置配置项。
Redis CONFIG 命令格式以下:
- 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>
使用 * 号获取全部配置项:
实例
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>
你能够经过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。
语法 CONFIG SET 命令基本语法:
- redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
实例
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
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"
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
string是redis最基本的类型,你能够理解成与Memcached如出一辙的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string能够包含任何数据。好比jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。
实例
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。
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>
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中咱们使用了 Redis HMSET, HEGTALL 命令,user:1 为键值。每一个 hash 能够存储 232 - 1 键值对(40多亿)。
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>
列表最多可存储 232 - 1 元素 (4294967295, 每一个列表可存储40多亿)。
Redis的Set是string类型的无序集合。集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,若是元素以及在集合中返回0,key对应的set不存在返回错误。
- 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>
注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的惟一性,第二次插入的元素将被忽略。集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。
Redis zset 和 set 同样也是string类型元素的集合,且不容许重复的成员。
不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。
zset的成员是惟一的,但分数(score)却能够重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
- zadd key score member
实例
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-cli
实例
如下实例讲解了如何启动 redis 客户端:
启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会链接本地的 redis 服务。
- $redis-cli
- redis 127.0.0.1:6379>
- redis 127.0.0.1:6379> PING
- PONG
在以上实例中咱们链接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。
在远程服务上执行命令
若是须要在远程 redis 服务上执行命令,一样咱们使用的也是 redis-cli 命令。
语法
- $ 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>
Redis 键命令用于管理 redis 的键。
语法
Redis 键命令的基本语法以下:
- 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>
在以上实例中 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 命令用于删除已存在的键。不存在的 key 会被忽略。
语法
redis DEL 命令基本语法以下:
- 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 命令用于序列化给定 key ,并返回被序列化的值。
redis DUMP 命令基本语法以下:
>= 2.6.0
若是 key 不存在,那么返回 nil 。 不然,返回序列化以后的值。
首先,咱们在 redis 中建立一个 key 并设置值。
如今使用 DUMP 序列化键值。
Redis EXISTS 命令用于检查给定 key 是否存在。
redis EXISTS 命令基本语法以下:
>= 1.0.0
若 key 存在返回 1 ,不然返回 0 。
如今咱们建立一个名为 apiref.comcc-new-key 的键并赋值,再使用 EXISTS 命令。
Redis Expire 命令用于设置 key 的过时时间。key 过时后将再也不可用。
redis Expire 命令基本语法以下:
>= 1.0.0
设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。
首先建立一个 key 并赋值:
为 key 设置过时时间:
以上实例中咱们为键 w3ckey 设置了过时时间为 1 分钟,1分钟后该键会自动删除。
Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过时时间。key 过时后将再也不可用。
redis Expireat 命令基本语法以下:
>= 1.0.0
设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。
首先建立一个 key 并赋值:
为 key 设置过时时间:
Redis PEXPIREAT 命令用于设置 key 的过时时间,已毫秒技。key 过时后将再也不可用。
redis PEXPIREAT 命令基本语法以下:
>= 1.0.0
设置成功返回 1 。 当 key 不存在或者不能为 key 设置过时时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过时时间)返回 0 。
首先建立一个 key 并赋值:
为 key 设置过时时间:
Redis Keys 命令用于查找全部符合给定模式 pattern 的 key 。。
redis KEYS 命令基本语法以下:
>= 1.0.0
符合给定模式的 key 列表 (Array)。
首先建立一些 key,并赋上对应值:
查找以 w3c 为开头的 key:
获取 redis 中全部的 key 可用使用 *。
Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。
redis Move 命令基本语法以下:
>= 1.0.0
移动成功返回 1 ,失败则返回 0 。
Redis PERSIST 命令用于移除给定 key 的过时时间,使得 key 永不过时。
redis PERSIST 命令基本语法以下:
>= 2.2.0
当过时时间移除成功时,返回 1 。 若是 key 不存在或 key 没有设置过时时间,返回 0 。
Redis Pttl 命令以毫秒为单位返回 key 的剩余过时时间。
redis Pttl 命令基本语法以下:
>= 2.6.0
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 不然,以毫秒为单位,返回 key 的剩余生存时间。
注意:在 Redis 2.8 之前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
Redis TTL 命令以秒为单位返回 key 的剩余过时时间。
redis TTL 命令基本语法以下:
>= 1.0.0
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 不然,以毫秒为单位,返回 key 的剩余生存时间。
注意:在 Redis 2.8 之前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。
redis RANDOMKEY 命令基本语法以下:
>= 1.0.0
当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。
Redis Rename 命令用于修改 key 的名称 。
redis Rename 命令基本语法以下:
>= 1.0.0
更名成功时提示 OK ,失败时候返回一个错误。
当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。
Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。
redis Renamenx 命令基本语法以下:
>= 1.0.0
修改为功时,返回 1 。 若是 NEW_KEY_NAME 已经存在,返回 0 。
Redis Type 命令用于返回 key 所储存的值的类型。
语法
redis Renamenx 命令基本语法以下:
可用版本
>= 1.0.0
返回值
返回 key 的数据类型,数据类型有:
实例
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法以下:
语法
实例
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 命令用于设置给定 key 的值。若是 key 已经存储其余值, SET 就覆写旧值,且无视类型。
语法
redis SET 命令基本语法以下:
可用版本
>= 1.0.0
返回值
在 Redis 2.6.12 之前版本, SET 命令老是返回 OK 。
从 Redis 2.6.12 版本开始, SET 在设置操做成功完成时,才返回 OK 。
实例
首先,咱们在 redis 中建立一个 key 并设置值。
Redis Get 命令用于获取指定 key 的值。若是 key 不存在,返回 nil 。若是key 储存的值不是字符串类型,返回一个错误。
语法
redis Get 命令基本语法以下:
可用版本
>= 1.0.0
返回值
返回 key 的值,若是 key 不存在时,返回 nil。 若是 key 不是字符串类型,那么返回一个错误。
实例
Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
语法
redis Getrange 命令基本语法以下:
可用版本
>= 2.4.0
返回值
截取获得的子字符串。
实例
首先,设置 mykey 的值并截取字符串。
Redis Getset 命令用于设置指定 key 的值,并返回 key 旧的值。
语法
redis Getset 命令基本语法以下:
可用版本
>= 1.0.0
返回值
返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。
当 key 存在但不是字符串类型时,返回一个错误。
实例
首先,设置 mykey 的值并截取字符串。
Redis Getbit 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
语法
redis Getbit 命令基本语法以下:
可用版本
>= 2.2.0
返回值
字符串值指定偏移量上的位(bit)。
当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。
实例
Redis Mget 命令返回全部(一个或多个)给定 key 的值。 若是给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
语法
redis Mget 命令基本语法以下:
可用版本
>= 1.0.0
返回值
一个包含全部给定 key 的值的列表。
实例
Redis Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
语法
redis Setbit 命令基本语法以下:
可用版本
>= 2.2.0
返回值
指定偏移量原来储存的位。
实例
Redis Setex 命令为指定的 key 设置值及其过时时间。若是 key 已经存在, SETEX 命令将会替换旧的值。
语法
redis Setex 命令基本语法以下:
可用版本
>= 2.0.0
返回值
设置成功时返回 OK 。
实例
Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
语法
redis Setnx 命令基本语法以下:
可用版本
>= 1.0.0
返回值
设置成功,返回 1 。 设置失败,返回 0 。
实例
Redis Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。
语法
redis Setrange 命令基本语法以下:
可用版本
>= 2.2.0
返回值
被修改后的字符串长度。
实例
Redis Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。
语法
redis Strlen 命令基本语法以下:
可用版本
>= 2.2.0
返回值
字符串值的长度。 当 key 不存在时,返回 0。
实例
Redis Mset 命令用于同时设置一个或多个 key-value 对。
语法
redis Mset 命令基本语法以下:
可用版本
>= 1.0.1
返回值
老是返回 OK 。
实例
Redis Msetnx 命令用于全部给定 key 都不存在时,同时设置一个或多个 key-value 对。
语法
redis Msetnx 命令基本语法以下:
可用版本
>= 1.0.1
返回值
当全部 key 都成功设置,返回 1 。 若是全部给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。
实例
Redis Psetex 命令以毫秒为单位设置 key 的生存时间。
语法redis Psetex 命令基本语法以下:
可用版本
>= 2.6.0
返回值
设置成功时返回 OK 。
实例
Redis Incr 命令将 key 中储存的数字值增一。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCR 操做。
若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操做的值限制在 64 位(bit)有符号数字表示以内。
语法
redis Incr 命令基本语法以下:
可用版本
>= 1.0.0
返回值
执行 INCR 命令以后 key 的值。
实例
Redis Incrby 命令将 key 中储存的数字加上指定的增量值。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCRBY 命令。
若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操做的值限制在 64 位(bit)有符号数字表示以内。
语法
redis Incrby 命令基本语法以下:
可用版本
>= 1.0.0
返回值
加上指定的增量值以后, key 的值。
实例
Redis Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。
若是 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操做。
语法
redis Incrbyfloat 命令基本语法以下:
可用版本
>= 2.6.0
返回值
执行命令以后 key 的值。
实例
Redis Decr 命令将 key 中储存的数字值减一。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECR 操做。
若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操做的值限制在 64 位(bit)有符号数字表示以内。
语法
redis Decr 命令基本语法以下:
可用版本
>= 1.0.0
返回值
执行命令以后 key 的值。
实例
Redis Decrby 命令将 key 所储存的值减去指定的减量值。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECRBY 操做。
若是值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操做的值限制在 64 位(bit)有符号数字表示以内。
语法
redis Decrby 命令基本语法以下:
可用版本
>= 1.0.0
返回值
减去指定减量值以后, key 的值。
实例
Redis Append 命令用于为指定的 key 追加值。
若是 key 已经存在而且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
若是 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 同样。
语法
redis Append 命令基本语法以下:
可用版本
>= 2.0.0
返回值
追加指定值以后, key 中字符串的长度。
实例
下表列出了 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 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每一个 hash 能够存储 232 - 1 键值对(40多亿)。
实例
在以上实例中,咱们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 w3ckey 中。
Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
语法
redis Hdel 命令基本语法以下:
可用版本
>= 2.0.0
返回值
被成功删除字段的数量,不包括被忽略的字段。
实例
Redis Hexists 命令用于查看哈希表的指定字段是否存在。
语法
redis Hexists 命令基本语法以下:
可用版本
>= 2.0.0
返回值
若是哈希表含有给定字段,返回 1 。 若是哈希表不含有给定字段,或 key 不存在,返回 0 。
实例
Redis Hgetall 命令用于返回哈希表中,全部的字段和值。
在返回值里,紧跟每一个字段名(field name)以后是字段的值(value),因此返回值的长度是哈希表大小的两倍。
语法
redis Hgetall 命令基本语法以下:
可用版本
>= 2.0.0
返回值
以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
实例
Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也能够为负数,至关于对指定字段进行减法操做。
若是哈希表的 key 不存在,一个新的哈希表被建立并执行 HINCRBY 命令。
若是指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将形成一个错误。
本操做的值被限制在 64 位(bit)有符号数字表示以内。
语法
redis Hincrby 命令基本语法以下:
可用版本
>= 2.0.0
返回值
执行 HINCRBY 命令以后,哈希表中字段的值。
实例
Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。
若是指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
语法
redis Hincrbyfloat 命令基本语法以下:
可用版本
>= 2.6.0
返回值
执行 Hincrbyfloat 命令以后,哈希表中字段的值。
实例
Redis Hkeys 命令用于获取哈希表中的全部字段名。
语法
redis Hkeys 命令基本语法以下:
可用版本
>= 2.0.0
返回值
包含哈希表中全部字段的列表。 当 key 不存在时,返回一个空列表。
实例
Redis Hlen 命令用于获取哈希表中字段的数量。
语法
redis Hlen 命令基本语法以下:
可用版本
>= 2.0.0
返回值
哈希表中字段的数量。 当 key 不存在时,返回 0 。
实例
Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。
若是指定的字段不存在于哈希表,那么返回一个 nil 值。
语法
redis Hmget 命令基本语法以下:
可用版本
>= 2.0.0
返回值
一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序同样。
实例
Redis Hset 命令用于为哈希表中的字段赋值 。
若是哈希表不存在,一个新的哈希表被建立并进行 HSET 操做。
若是字段已经存在于哈希表中,旧值将被覆盖。
语法
redis Hset 命令基本语法以下:
可用版本
>= 2.0.0
返回值
若是字段是哈希表中的一个新建字段,而且值设置成功,返回 1 。 若是哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
实例
Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。
若是哈希表不存在,一个新的哈希表被建立并进行 HSET 操做。
若是字段已经存在于哈希表中,操做无效。
若是 key 不存在,一个新哈希表被建立并执行 HSETNX 命令。
语法
redis Hsetnx 命令基本语法以下:
可用版本
>= 2.0.0
返回值
设置成功,返回 1 。 若是给定字段已经存在且没有操做被执行,返回 0 。
实例
Redis Hvals 命令返回哈希表全部字段的值。
语法
redis Hvals 命令基本语法以下:
可用版本
>= 2.0.0
返回值
一个包含哈希表中全部值的表。 当 key 不存在时,返回一个空表。
实例
下表列出了列表相关的基本命令:
序号 | 命令及描述 |
---|---|
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列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素导列表的头部(左边)或者尾部(右边)
一个列表最多能够包含 232 - 1 个元素 (4294967295, 每一个列表超过40亿个元素)。
实例
在以上实例中咱们使用了 LPUSH 将三个值插入了名为 w3ckey 的列表当中。
Redis Blpop 命令移出并获取列表的第一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
语法
redis Blpop 命令基本语法以下:
可用版本
>= 2.0.0
返回值
若是列表为空,返回一个 nil 。 不然,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
实例
在以上实例中,操做会被阻塞,若是指定的列表 key list1 存在数据则会返回第一个元素,不然在等待100秒后会返回 nil 。
Redis Brpop 命令移出并获取列表的最后一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
语法
redis Blpop 命令基本语法以下:
可用版本
>= 2.0.0
返回值
假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
实例
在以上实例中,操做会被阻塞,若是指定的列表 key list1 存在数据则会返回第一个元素,不然在等待100秒后会返回 nil 。
Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回它; 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
语法
redis Brpoplpush 命令基本语法以下:
可用版本
>= 2.0.0
返回值
假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。
实例
Redis Lindex 命令用于经过索引获取列表中的元素。你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
语法
redis Lindex 命令基本语法以下:
可用版本
>= 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 命令用于返回列表的长度。 若是列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 若是 key 不是列表类型,返回一个错误。
语法
redis Llen 命令基本语法以下:
可用版本
>= 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 命令基本语法以下:
可用版本
>= 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 命令将一个或多个值插入到列表头部。 若是 key 不存在,一个空列表会被建立并执行 LPUSH 操做。 当 key 存在但不是列表类型时,返回一个错误。
注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受单个 value 值。
语法
redis Lpush 命令基本语法以下:
可用版本
>= 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 命令基本语法以下:
可用版本
>= 2.2.0
返回值
LPUSHX 命令执行以后,列表的长度。
实例
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
语法
redis Lrange 命令基本语法以下:
可用版本
>= 1.0.0
返回值
一个列表,包含指定区间内的元素。
实例
Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值能够是如下几种:
语法
redis Lrem 命令基本语法以下:
可用版本
>= 1.0.0
返回值
被移除元素的数量。 列表不存在时返回 0 。
实例
Redis Lset 经过索引来设置元素的值。
当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
关于列表下标的更多信息,请参考 LINDEX 命令。
语法
redis Lset 命令基本语法以下:
可用版本
>= 1.0.0
返回值
操做成功返回 ok ,不然返回错误信息。
实例
Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间以内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
语法
redis Ltrim 命令基本语法以下:
可用版本
>= 1.0.0
返回值
命令执行成功时,返回 ok 。
实例
Redis Rpop 命令用于移除并返回列表的最后一个元素。
语法
redis Rpop 命令基本语法以下:
可用版本
>= 1.0.0
返回值
列表的最后一个元素。 当列表不存在时,返回 nil 。
实例
Redis Lpush 命令将一个或多个值插入到列表头部。 若是 key 不存在,一个空列表会被建立并执行 LPUSH 操做。 当 key 存在但不是列表类型时,返回一个错误。
注意:在Redis 2.4版本之前的 LPUSH 命令,都只接受单个 value 值。
语法
redis Lpush 命令基本语法以下:
可用版本
>= 1.0.0
返回值
执行 LPUSH 命令后,列表的长度。
实例
Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操做无效。
语法
redis Lpushx 命令基本语法以下:
可用版本
>= 2.2.0
返回值
LPUSHX 命令执行以后,列表的长度。
实例
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
语法
redis Lrange 命令基本语法以下:
可用版本
>= 1.0.0
返回值
一个列表,包含指定区间内的元素。
实例
下表列出了 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是string类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。
实例
在以上实例中咱们经过 SADD 命令向名为 w3ckey 的集合插入的三个元素。
Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
假如集合 key 不存在,则建立一个只包含添加的元素做成员的集合。
当集合 key 不是集合类型时,返回一个错误。
注意:在Redis2.4版本之前, SADD 只接受单个成员值。
语法
redis Sadd 命令基本语法以下:
可用版本
>= 1.0.0
返回值
被添加到集合中的新元素的数量,不包括被忽略的元素。
实例
Redis Scard 命令返回集合中元素的数量。
语法
redis Scard 命令基本语法以下:
可用版本
>= 1.0.0
返回值
集合的数量。 当集合 key 不存在时,返回 0 。
实例
Redis Sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。
语法
redis Sdiff 命令基本语法以下:
可用版本
>= 1.0.0
返回值
包含差集成员的列表。
实例
Redis Sdiffstore 命令将给定集合之间的差集存储在指定的集合中。若是指定的集合 key 已存在,则会被覆盖。
语法
redis Sdiffstore 命令基本语法以下:
可用版本
>= 1.0.0
返回值
结果集中的元素数量。
实例
Redis Sinter 命令返回给定全部给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
语法
redis Sinter 命令基本语法以下:
可用版本
>= 1.0.0
返回值
交集成员的列表。
实例
Redis Sinterstore 命令将给定集合之间的交集存储在指定的集合中。若是指定的集合已经存在,则将其覆盖。
语法
redis Sinterstore 命令基本语法以下:
可用版本
>= 1.0.0
返回值
交集成员的列表。
实例
Redis Sismember 命令判断成员元素是不是集合的成员。
语法
redis Sismember 命令基本语法以下:
可用版本
>= 1.0.0
返回值
若是成员元素是集合的成员,返回 1 。 若是成员元素不是集合的成员,或 key 不存在,返回 0 。
实例
Redis Smembers 命令返回集合中的全部的成员。 不存在的集合 key 被视为空集合。
语法
redis Smembers 命令基本语法以下:
可用版本
>= 1.0.0
返回值
集合中的全部成员。
实例
Redis Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合。
SMOVE 是原子性操做。
若是 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操做,仅返回 0 。不然, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
当 source 或 destination 不是集合类型时,返回一个错误。
语法
redis Smove 命令基本语法以下:
可用版本
>= 1.0.0
返回值
若是成员元素被成功移除,返回 1 。 若是成员元素不是 source 集合的成员,而且没有任何操做对 destination 集合执行,那么返回 0 。
实例
Redis Spop 命令用于移除并返回集合中的一个随机元素。
语法
redis Spop 命令基本语法以下:
可用版本
>= 1.0.0
返回值
被移除的随机元素。 当集合不存在或是空集时,返回 nil 。
实例
Redis Srandmember 命令用于返回集合中的一个随机元素。
从 Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数:
该操做和 SPOP 类似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。
语法
redis Srandmember 命令基本语法以下:
可用版本
>= 1.0.0
返回值
只提供集合 key 参数时,返回一个元素;若是集合为空,返回 nil 。 若是提供了 count 参数,那么返回一个数组;若是集合为空,返回空数组。
实例
Redis Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
当 key 不是集合类型,返回一个错误。
在 Redis 2.4 版本之前, SREM 只接受单个成员值。
语法
redis Srem 命令基本语法以下:
可用版本
>= 1.0.0
返回值
被成功移除的元素的数量,不包括被忽略的元素。
实例
Redis Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。
语法
redis Sunion 命令基本语法以下:
可用版本
>= 1.0.0
返回值
并集成员的列表。
实例
Redis Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。若是 destination 已经存在,则将其覆盖。
语法
redis Sunionstore 命令基本语法以下:
可用版本
>= 1.0.0
返回值
结果集中的元素数量。
实例
Redis Sscan 命令用于迭代集合键中的元素。
语法
redis Sscan 命令基本语法以下:
可用版本
>= 1.0.0
返回值
数组列表。
实例
下表列出了 redis 有序集合的基本命令:
Redis 有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。
不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是惟一的,但分数(score)却能够重复。
集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。
实例
在以上实例中咱们经过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。
Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
若是某个成员已是有序集的成员,那么更新这个成员的分数值,并经过从新插入这个成员元素,来保证该成员在正确的位置上。
分数值能够是整数值或双精度浮点数。
若是有序集合 key 不存在,则建立一个空的有序集并执行 ZADD 操做。
当 key 存在但不是有序集类型时,返回一个错误。
注意: 在 Redis 2.4 版本之前, ZADD 每次只能添加一个元素。
语法
redis Zadd 命令基本语法以下:
可用版本
>= 1.2.0
返回值
被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。
实例
Redis Zcard 命令用于计算集合中元素的数量。
语法
redis Zcard 命令基本语法以下:
可用版本
>= 1.2.0
返回值
当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。
实例
Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。
语法
redis Zcount 命令基本语法以下:
可用版本
>= 2.0.0
返回值
分数值在 min 和 max 之间的成员的数量。
实例
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.2.0
返回值
member 成员的新分数值,以字符串形式表示。
实例
Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认状况下,结果集中某个成员的分数值是全部给定集下该成员分数值之和。
语法
redis Zinterstore 命令基本语法以下:
可用版本
>= 2.0.0
返回值
保存到目标结果集的的成员数量。
实例
Redis Zlexcount 命令在计算有序集合中指定字典区间内成员数量。
语法
redis Zlexcount 命令基本语法以下:
可用版本
>= 2.8.9
返回值
指定区间内的成员数量。
实例
Redis Zrange 返回有序集中,指定区间内的成员。
其中成员的位置按分数值递增(从小到大)来排序。
具备相同分数值的成员按字典序(lexicographical order )来排列。
若是你须要成员按
值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
语法
redis Zrange 命令基本语法以下:
可用版本
>= 1.2.0
返回值
指定区间内,带有分数值(可选)的有序集成员的列表。
实例
Redis Zrangebylex 经过字典区间返回有序集合的成员。
语法
redis Zrange 命令基本语法以下:
可用版本
>= 2.8.9
返回值
指定区间内的元素列表。
实例
Redis Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的全部成员。
语法
redis Zremrangebyrank 命令基本语法以下:
可用版本
>= 2.0.0
返回值
被移除成员的数量。
实例
Redis Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
redis Zrank 命令基本语法以下:
>= 2.0.0
若是成员是有序集 key 的成员,返回 member 的排名。 若是成员不是有序集 key 的成员,返回 nil 。
Redis Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
当 key 存在但不是有序集类型时,返回一个错误。
注意: 在 Redis 2.4 版本之前, ZREM 每次只能删除一个元素。
语法
redis Zrem 命令基本语法以下:
可用版本
>= 1.2.0
返回值
被成功移除的成员的数量,不包括被忽略的成员。
实例
Redis Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
具备相同分数值的成员按字典序来排列(该属性是有序集提供的,不须要额外的计算)。
默认状况下,区间的取值使用闭区间 (小于等于或大于等于),你也能够经过给参数前增长 ( 符号来使用可选的开区间 (小于或大于)。
举个例子:
返回全部符合条件 1
则返回全部符合条件 5
语法
redis Zrangebyscore 命令基本语法以下:
可用版本
>= 1.0.5
返回值
指定区间内,带有分数值(可选)的有序集成员的列表。
实例
Redis Zremrangebylex 命令用于移除有序集合中给定的字典区间的全部成员。
语法
redis Zremrangebylex命令基本语法以下:
可用版本
>= 2.8.9
返回值
被成功移除的成员的数量,不包括被忽略的成员。
实例
Redis Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的全部成员。
语法
redis Zremrangebyscore 命令基本语法以下:
>= 1.2.0
返回值
被移除成员的数量。
实例
Redis Zrevrange 命令返回有序集中,指定区间内的成员。
其中成员的位置按分数值递减(从大到小)来排列。
具备相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其余方面和 ZRANGE 命令同样。
语法
redis Zrevrange 命令基本语法以下:
可用版本
>= 1.2.0
返回值
指定区间内,带有分数值(可选)的有序集成员的列表。
实例
Redis Zrevrangebyscore 返回有序集中指定分数区间内的全部的成员。有序集成员按分数值递减(从大到小)的次序排列。
具备相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其余方面和 ZRANGEBYSCORE 命令同样。
语法
redis Zrevrangebyscore 命令基本语法以下:
可用版本
>= 2.2.0
返回值
指定区间内,带有分数值(可选)的有序集成员的列表。
实例
Redis Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。
排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。
使用 ZRANK 命令能够得到成员按分数值递增(从小到大)排列的排名。
语法
redis Zrevrank 命令基本语法以下:
可用版本
>= 2.2.0
返回值
若是成员是有序集 key 的成员,返回成员的排名。 若是成员不是有序集 key 的成员,返回 nil 。
实例
Redis Zscore 命令返回有序集中,成员的分数值。 若是成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
语法
redis Zscore 命令基本语法以下:
可用版本
>= 1.2.0
返回值
成员的分数值,以字符串形式表示。
实例
Redis Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认状况下,结果集中某个成员的分数值是全部给定集下该成员分数值之和 。
语法
redis Zunionstore 命令基本语法以下:
可用版本
>= 2.0.0
返回值
保存到 destination 的结果集的成员数量。
实例
Redis Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)
语法
redis Zscan 命令基本语法以下:
可用版本
>= 2.8.0
返回值
返回的每一个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。
下表列出了 redis HyperLogLog 的基本命令:
序号 | 命令及描述 |
---|---|
1 | PFADD key element [element ...] 添加指定元素到 HyperLogLog 中。 |
2 | PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值。 |
3 | PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 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 的工做过程:
Redis Debug Segfault 命令执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。
语法
redis Debug Segfault 命令基本语法以下:
可用版本
>= 1.0.0
返回值
无
实例
Redis Pfcount 命令返回给定 HyperLogLog 的基数估算值。
语法
redis Pfcount 命令基本语法以下:
可用版本
>= 2.8.9
返回值整数,返回给定 HyperLogLog 的基数值,若是多个 HyperLogLog 则返回基数估值之和。
实例
Redis Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是经过对全部 给定 HyperLogLog 进行并集计算得出的。
语法
redis Pgmerge 命令基本语法以下:
可用版本
>= 2.8.9
返回值
返回 OK。
实例
下表列出了 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 发布订阅(pub/sub)是一种消息通讯模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端能够订阅任意数量的频道。
下图展现了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息经过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
实例
如下实例演示了发布订阅是如何工做的。在咱们实例中咱们建立了订阅频道名为 redisChat:
如今,咱们先从新开启个 redis 客户端,而后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
Redis Psubscribe 命令订阅一个或多个符合给定模式的频道。
每一个模式以 * 做为匹配符,好比 it* 匹配全部以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配全部以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。
语法
redis Psubscribe 命令基本语法以下:
可用版本
>= 2.0.0
返回值
接收到的信息。
实例
Redis Pubsub 命令用于查看订阅与发布系统状态,它由数个不一样格式的子命令组成。
语法
redis Pubsub 命令基本语法以下:
可用版本
>= 2.8.0
返回值
由活跃频道组成的列表。
实例
Redis Publish 命令用于将信息发送到指定的频道。
语法
redis Publish 命令基本语法以下:
可用版本
>= 2.0.0
返回值
接收到信息的订阅者数量。
实例
Redis Punsubscribe 命令用于退订全部给定模式的频道。
语法
redis Punsubscribe 命令基本语法以下:
可用版本
>= 2.0.0
返回值
这个命令在不一样的客户端中有不一样的表现。
实例
Redis Subscribe 命令用于订阅给定的一个或多个频道的信息。。
语法
redis Subscribe 命令基本语法以下:
可用版本
>= 2.0.0
返回值
接收到的信息
实例
Redis Unsubscribe 命令用于退订给定的一个或多个频道的信息。
语法
redis Unsubscribe 命令基本语法以下:
可用版本
>= 2.0.0
返回值
这个命令在不一样的客户端中有不一样的表现。
实例
下表列出了 redis 事务的相关命令:
序号 | 命令及描述 |
---|---|
1 | DISCARD 取消事务,放弃执行事务块内的全部命令。 |
2 | EXEC 执行全部事务块内的命令。 |
3 | MULTI 标记一个事务块的开始。 |
4 | UNWATCH 取消 WATCH 命令对全部 key 的监视。 |
5 | WATCH key [key ...] 监视一个(或多个) key ,若是在事务执行以前这个(或这些) key 被其余命令所改动,那么事务将被打断。 |
Redis 事务能够一次执行多个命令, 而且带有如下两个重要的保证:
一个事务从开始到执行会经历如下三个阶段:
实例
如下是一个事务的例子, 它先以 MULTI 开始一个事务, 而后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的全部命令:
Redis Discard 命令用于取消事务,放弃执行事务块内的全部命令。
语法
redis Discard 命令基本语法以下:
可用版本
>= 2.0.0
返回值
老是返回 OK 。
实例
Redis Exec 命令用于执行全部事务块内的命令。
语法
redis Exec 命令基本语法以下:
可用版本
>= 1.2.0
返回值
事务块内全部命令的返回值,按命令执行的前后顺序排列。 当操做被打断时,返回空值 nil 。
实例
Redis Multi 命令用于标记一个事务块的开始。
事务块内的多条命令会按照前后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
语法
redis Multi 命令基本语法以下:
可用版本
>= 1.2.0
返回值
老是返回 OK 。
实例
Redis Unwatch 命令用于取消 WATCH 命令对全部 key 的监视。
语法
redis Unwatch 命令基本语法以下:
可用版本
>= 2.2.0
返回值
老是返回 OK 。
实例
Redis Watch 命令用于监视一个(或多个) key ,若是在事务执行以前这个(或这些) key 被其余命令所改动,那么事务将被打断
语法
redis Watch 命令基本语法以下:
可用版本
>= 2.2.0
返回值
老是返回 OK 。
实例
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 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本经过内嵌支持 Lua 环境。执行脚本的经常使用命令为 EVAL。
语法
Eval 命令的基本语法以下:
实例
如下实例演示了 redis 脚本工做过程:
Redis Eval 命令使用 Lua 解释器执行脚本。
语法
redis Eval 命令基本语法以下:
参数说明:
可用版本
>= 2.6.0
实例
Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。
语法
redis Evalsha 命令基本语法以下:
参数说明:
可用版本
>= 2.6.0
实例
Redis Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中。
语法
redis Script Exists 命令基本语法以下:
可用版本
>= 2.6.0
返回值
一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。
列表中的元素和给定的 SHA1 校验和保持对应关系,好比列表的第三个元素的值就表示第三个 SHA1 校验和所指定的脚本在缓存中的状态。
实例
Redis Script Flush 命令用于清除全部 Lua 脚本缓存。
语法
redis Script Flush 命令基本语法以下:
可用版本
>= 2.6.0
返回值
老是返回 OK
实例
Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操做时,这个命令才生效。
这个命令主要用于终止运行时间过长的脚本,好比一个由于 BUG 而发生无限循环的脚本。
SCRIPT KILL 执行以后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误做为返回值。
语法
redis Script kill 命令基本语法以下:
可用版本
>= 2.6.0
返回值
老是返回 OK
实例
Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不当即执行这个脚本。
EVAL 命令也会将脚本添加到脚本缓存中,可是它会当即对输入的脚本进行求值。
若是给定的脚本已经在缓存里面了,那么不执行任何操做。
在脚本被加入到缓存以后,经过 EVALSHA 命令,可使用脚本的 SHA1 校验和来调用这个脚本。
脚本能够在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。
关于使用 Redis 对 Lua 脚本进行求值的更多信息,请参见 EVAL 命令。
语法
redis Script Load 命令基本语法以下:
可用版本
>= 2.6.0
返回值
给定脚本的 SHA1 校验和
实例
下表列出了 redis 链接的基本命令:
序号 | 命令及描述 |
---|---|
1 | AUTH password 验证密码是否正确 |
2 | ECHO message 打印字符串 |
3 | PING 查看服务是否运行 |
4 | QUIT 关闭当前链接 |
5 | SELECT index 切换到指定的数据库 |
Redis 链接命令主要是用于链接 redis 服务。
实例
如下实例演示了客户端如何经过密码验证链接到 redis 服务,并检测服务是否在运行:
Redis Auth 命令用于检测给定的密码和配置文件中的密码是否相符。
语法
redis Auth 命令基本语法以下:
可用版本
>= 1.0.0
返回值
密码匹配时返回 OK ,不然返回一个错误。
实例
Redis Echo 命令用于打印给定的字符串。
redis Echo 命令基本语法以下:
可用版本
>= 1.0.0
返回值
返回字符串自己。
实例
Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,若是服务器运做正常的话,会返回一个 PONG 。
一般用于测试与服务器的链接是否仍然生效,或者用于测量延迟值。
语法
redis Ping 命令基本语法以下:
可用版本
>= 1.0.0
返回值
若是链接正常就返回一个 PONG ,不然返回一个链接错误。
实例
Redis Quit 命令用于关闭与当前客户端与redis服务的链接。
一旦全部等待中的回复(若是有的话)顺利写入到客户端,链接就会被关闭。
语法
redis Quit 命令基本语法以下:
可用版本
>= 1.0.0
返回值
老是返回 OK 。
实例
Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 做为起始索引值。
语法
redis Select 命令基本语法以下:
可用版本
>= 1.0.0
返回值
老是返回 OK 。
实例
下表列出了 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,首先要获取安装包。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是客户端程序)如图正常提示进入,并显示正确端口号,则表示服务已经启动。