Redis - 快速指南



Redis - 概述

Redis 是一个开源的、高级的键值存储,是构建高性能、可扩展 Web 应用程序的理想解决方案。

Redis 有三个主要特点使其与众不同。

  • Redis 将其数据库完全存储在内存中,仅使用磁盘进行持久化。

  • 与许多键值数据存储相比,Redis 具有相对丰富的 数据类型。

  • Redis 可以将数据复制到任意数量的从服务器。

Redis 优势

以下是 Redis 的一些优势。

  • 异常快速 - Redis 非常快,每秒可以执行大约 110000 次 SET 操作,大约 81000 次 GET 操作。

  • 支持丰富的数据类型 - Redis 原生支持开发人员已经了解的大多数数据类型,例如列表、集合、有序集合和哈希。这使得解决各种问题变得容易,因为我们知道哪个问题可以通过哪种数据类型更好地处理。

  • 操作是原子性的 - 所有 Redis 操作都是原子性的,这确保了如果两个客户端同时访问,Redis 服务器将接收更新后的值。

  • 多功能工具 - Redis 是一个多功能工具,可用于多种用例,例如缓存、消息队列(Redis 原生支持发布/订阅)、应用程序中的任何短期数据,例如 Web 应用程序会话、网页点击次数等。

Redis 与其他键值存储的比较

  • Redis 是键值数据库中不同的发展路径,其中值可以包含更复杂的数据类型,并在这些数据类型上定义原子操作。

  • Redis 是一个内存数据库,但也是一个持久化到磁盘的数据库,因此它代表了一种不同的权衡,其中通过限制无法大于内存的数据集来实现非常高的写入和读取速度。

  • 内存数据库的另一个优点是,与磁盘上的相同数据结构相比,复杂数据结构的内存表示更容易操作。因此,Redis 可以用很少的内部复杂性完成很多事情。

Redis - 环境

在本章中,您将学习 Redis 的环境设置。

在 Ubuntu 上安装 Redis

要在 Ubuntu 上安装 Redis,请转到终端并键入以下命令:

$sudo apt-get update 
$sudo apt-get install redis-server

这将在您的机器上安装 Redis。

启动 Redis

$redis-server

检查 Redis 是否正在工作

$redis-cli 

这将打开一个 redis 提示符。

redis 127.0.0.1:6379>

在上面的提示符中,127.0.0.1 是您机器的 IP 地址,6379 是 Redis 服务器正在运行的端口。现在键入以下 PING 命令。

redis 127.0.0.1:6379> ping 
PONG

这表明 Redis 已成功安装在您的机器上。

在 Ubuntu 上安装 Redis Desktop Manager

要在 Ubuntu 上安装 Redis 桌面管理器,只需从 https://redisdesktop.com/download 下载软件包即可

打开下载的软件包并安装它。

Redis 桌面管理器将为您提供管理 Redis 键和数据的 UI。

Redis - 配置

在 Redis 中,在 Redis 的根目录下有一个配置文件(redis.conf)。虽然您可以通过 Redis CONFIG 命令获取和设置所有 Redis 配置。

语法

以下是 Redis CONFIG 命令的基本语法。

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

示例

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

要获取所有配置设置,请在 CONFIG_SETTING_NAME 处使用 *

示例

redis 127.0.0.1:6379> CONFIG GET *  
  1) "dbfilename" 
  2) "dump.rdb" 
  3) "requirepass" 
  4) "" 
  5) "masterauth" 
  6) "" 
  7) "unixsocket" 
  8) "" 
  9) "logfile" 
 10) "" 
 11) "pidfile" 
 12) "/var/run/redis.pid" 
 13) "maxmemory" 
 14) "0"
 15) "maxmemory-samples" 
 16) "3" 
 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) "4064" 
 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) "no-appendfsync-on-rewrite" 
 76) "no" 
 77) "slave-serve-stale-data" 
 78) "yes" 
 79) "slave-read-only" 
 80) "yes" 
 81) "stop-writes-on-bgsave-error" 
 82) "yes" 
 83) "daemonize" 
 84) "no" 
 85) "rdbcompression" 
 86) "yes"
 87) "rdbchecksum" 
 88) "yes" 
 89) "activerehashing" 
 90) "yes" 
 91) "repl-disable-tcp-nodelay" 
 92) "no" 
 93) "aof-rewrite-incremental-fsync" 
 94) "yes" 
 95) "appendonly" 
 96) "no" 
 97) "dir" 
 98) "/home/deepak/Downloads/redis-2.8.13/src" 
 99) "maxmemory-policy" 
100) "volatile-lru" 
101) "appendfsync" 
102) "everysec" 
103) "save" 
104) "3600 1 300 100 60 10000" 
105) "loglevel" 
106) "notice" 
107) "client-output-buffer-limit" 
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60" 
109) "unixsocketperm" 
110) "0" 
111) "slaveof" 
112) "" 
113) "notify-keyspace-events" 
114) "" 
115) "bind" 
116) "" 

编辑配置

要更新配置,您可以直接编辑 redis.conf 文件,也可以通过 CONFIG set 命令更新配置。

语法

以下是 CONFIG SET 命令的基本语法。

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

示例

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

Redis - 数据类型

Redis 支持 5 种数据类型。

字符串

Redis 字符串是一系列字节。Redis 中的字符串是二进制安全的,这意味着它们具有已知的长度,而不是由任何特殊的终止字符确定的。因此,您可以在一个字符串中存储多达 512 兆字节的内容。

示例

redis 127.0.0.1:6379> SET name "tutorialspoint" 
OK 
redis 127.0.0.1:6379> GET name 
"tutorialspoint"

在上面的示例中,SETGET 是 Redis 命令,name 是 Redis 中使用的键,tutorialspoint 是存储在 Redis 中的字符串值。

注意 - 字符串值的最大长度为 512 兆字节。

哈希

Redis 哈希是键值对的集合。Redis 哈希是在字符串字段和字符串值之间映射。因此,它们用于表示对象。

示例

redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password 
tutorialspoint points 200 
OK 
redis 127.0.0.1:6379> HGETALL user:1  
1) "username" 
2) "tutorialspoint" 
3) "password" 
4) "tutorialspoint" 
5) "points" 
6) "200"

在上面的示例中,哈希数据类型用于存储包含用户基本信息的用户信息对象。这里 HMSET, HGETALL 是 Redis 的命令,而 user - 1 是键。

每个哈希可以存储多达 232 - 1 个字段值对(超过 40 亿个)。

列表

Redis 列表只是字符串列表,按插入顺序排序。您可以将元素添加到 Redis 列表的头部或尾部。

示例

redis 127.0.0.1:6379> lpush tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush tutoriallist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush tutoriallist rabitmq 
(integer) 3 
redis 127.0.0.1:6379> lrange tutoriallist 0 10  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

列表的最大长度为 232 - 1 个元素(4294967295,每个列表超过 40 亿个元素)。

集合

Redis 集合是字符串的无序集合。在 Redis 中,您可以添加、删除和测试成员的存在性,时间复杂度为 O(1)。

示例

redis 127.0.0.1:6379> sadd tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 0 
redis 127.0.0.1:6379> smembers tutoriallist  

1) "rabitmq" 
2) "mongodb" 
3) "redis" 

注意 - 在上面的示例中,rabitmq 添加了两次,但是由于集合的唯一属性,它只添加了一次。

集合中成员的最大数量为 232 - 1(4294967295,每个集合超过 40 亿个成员)。

有序集合

Redis 有序集合类似于 Redis 集合,是字符串的非重复集合。不同之处在于,有序集合的每个成员都与一个分数相关联,该分数用于按顺序排列有序集合,从小到大的分数。虽然成员是唯一的,但分数可以重复。

示例

redis 127.0.0.1:6379> zadd tutoriallist 0 redis 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000  

1) "redis" 
2) "mongodb" 
3) "rabitmq" 

Redis - 命令

Redis 命令用于对 Redis 服务器执行一些操作。

要在 Redis 服务器上运行命令,您需要一个 Redis 客户端。Redis 客户端在 Redis 软件包中可用,我们之前已经安装了它。

语法

以下是 Redis 客户端的基本语法。

$redis-cli 

示例

以下示例说明了如何启动 Redis 客户端。

要启动 Redis 客户端,请打开终端并键入命令 redis-cli。这将连接到您的本地服务器,现在您可以运行任何命令。

$redis-cli 
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> PING  
PONG

在上面的示例中,我们连接到在本地机器上运行的 Redis 服务器并执行命令 PING,该命令检查服务器是否正在运行。

在远程服务器上运行命令

要在 Redis 远程服务器上运行命令,您需要使用相同的客户端 redis-cli 连接到服务器

语法

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

示例

以下示例显示了如何连接到 Redis 远程服务器,该服务器在主机 127.0.0.1 上运行,端口为 6379,并且密码为 mypass。

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass" 
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> PING  
PONG

Redis - 键

Redis 键命令用于管理 Redis 中的键。以下是使用 redis 键命令的语法。

语法

redis 127.0.0.1:6379> COMMAND KEY_NAME

示例

redis 127.0.0.1:6379> SET tutorialspoint redis 
OK 
redis 127.0.0.1:6379> DEL tutorialspoint 
(integer) 1

在上面的示例中,DEL 是命令,而 tutorialspoint 是键。如果键被删除,则命令的输出将为 (integer) 1,否则将为 (integer) 0。

Redis 键命令

下表列出了一些与键相关的基本命令。

序号 命令和描述
1 DEL key

此命令删除键(如果存在)。

2 DUMP key

此命令返回存储在指定键处的值的序列化版本。

3 EXISTS key

此命令检查键是否存在。

4 EXPIRE key seconds

在指定时间后设置键的过期时间。

5 EXPIREAT key timestamp

在指定时间后设置键的过期时间。这里时间采用 Unix 时间戳格式。

6 PEXPIRE key milliseconds

以毫秒为单位设置键的过期时间。

7 PEXPIREAT key milliseconds-timestamp

以毫秒为单位设置键的过期时间,以 Unix 时间戳指定。

8 KEYS pattern

查找与指定模式匹配的所有键。

9 MOVE key db

将键移动到另一个数据库。

10 PERSIST key

删除键的过期时间。

11 PTTL key

以毫秒为单位获取键过期时间的剩余时间。

12 TTL key

获取键过期时间的剩余时间。

13 RANDOMKEY

从 Redis 返回一个随机键。

14 RENAME key newkey

更改键名。

15 RENAMENX key newkey

重命名键(如果新键不存在)。

16 TYPE key

返回存储在键中的值的类型。

Redis - 字符串

Redis 字符串命令用于管理 Redis 中的字符串值。以下是使用 Redis 字符串命令的语法。

语法

redis 127.0.0.1:6379> COMMAND KEY_NAME 

示例

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

在上面的示例中,SETGET 是命令,而 tutorialspoint 是键。

Redis 字符串命令

下表列出了一些管理 Redis 中字符串的基本命令。

序号 命令和描述
1 SET key value

此命令设置指定键的值。

2 GET key

获取键的值。

3 GETRANGE key start end

获取存储在键中的字符串的子字符串。

4 GETSET key value

设置键的字符串值并返回其旧值。

5 GETBIT key offset

返回存储在键中的字符串值中偏移量处的比特值。

6 MGET key1 [key2..]

获取所有给定键的值

7 SETBIT key offset value

设置或清除存储在键中的字符串值中偏移量处的比特位

8 SETEX key seconds value

设置键的值及其过期时间

9 SETNX key value

仅当键不存在时设置键的值

10 SETRANGE key offset value

覆盖存储在键中的字符串从指定偏移量开始的部分

11 STRLEN key

获取存储在键中的值的长度

12 MSET key value [key value ...]

将多个键设置为多个值

13 MSETNX key value [key value ...]

仅当所有键都不存在时,将多个键设置为多个值

14 PSETEX key milliseconds value

设置键的值和以毫秒为单位的过期时间

15 INCR key

将键的整数值加1

16 INCRBY key increment

将键的整数值增加指定数量

17 INCRBYFLOAT key increment

将键的浮点值增加指定数量

18 DECR key

将键的整数值减1

19 DECRBY key decrement

将键的整数值减少指定数量

20 APPEND key value

将值追加到键

Redis - 哈希

Redis 哈希是字符串字段和字符串值之间的映射。因此,它们是表示对象的完美数据类型。

在 Redis 中,每个哈希可以存储超过 40 亿个字段-值对。

示例

redis 127.0.0.1:6379> HMSET tutorialspoint name "redis tutorial" 
description "redis basic commands for caching" likes 20 visitors 23000 
OK 
redis 127.0.0.1:6379> HGETALL tutorialspoint  
1) "name" 
2) "redis tutorial" 
3) "description" 
4) "redis basic commands for caching" 
5) "likes" 
6) "20" 
7) "visitors" 
8) "23000"

在上面的示例中,我们已将 Redis 教程详细信息(名称、描述、喜欢、访问者)设置为名为“tutorialspoint”的哈希中。

Redis 哈希命令

下表列出了一些与哈希相关的基本命令。

序号 命令和描述
1 HDEL key field2 [field2]

删除一个或多个哈希字段。

2 HEXISTS key field

确定哈希字段是否存在。

3 HGET key field

获取存储在指定键处的哈希字段的值。

4 HGETALL key

获取存储在指定键处的哈希中的所有字段和值

5 HINCRBY key field increment

将哈希字段的整数值增加指定数量

6 HINCRBYFLOAT key field increment

将哈希字段的浮点值增加指定数量

7 HKEYS key

获取哈希中的所有字段

8 HLEN key

获取哈希中字段的数量

9 HMGET key field1 [field2]

获取所有给定哈希字段的值

10 HMSET key field1 value1 [field2 value2 ]

将多个哈希字段设置为多个值

11 HSET key field value

设置哈希字段的字符串值

12 HSETNX key field value

仅当字段不存在时设置哈希字段的值

13 HVALS key

获取哈希中的所有值

14 HSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代哈希字段和关联的值

Redis - 列表

Redis 列表只是字符串列表,按插入顺序排序。您可以在 Redis 列表的头部或尾部添加元素。

列表的最大长度为 232 - 1 个元素(4294967295,每个列表超过 40 亿个元素)。

示例

redis 127.0.0.1:6379> LPUSH tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> LPUSH tutorials mongodb 
(integer) 2 
redis 127.0.0.1:6379> LPUSH tutorials mysql 
(integer) 3 
redis 127.0.0.1:6379> LRANGE tutorials 0 10  
1) "mysql" 
2) "mongodb" 
3) "redis"

在上面的示例中,三个值由命令LPUSH插入到名为“tutorials”的 Redis 列表中。

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

将列表修剪到指定范围

14 RPOP key

移除并获取列表中的最后一个元素

15 RPOPLPUSH source destination

移除列表中的最后一个元素,将其追加到另一个列表并返回它

16 RPUSH key value1 [value2]

在列表的末尾添加一个或多个值

17 RPUSHX key value

仅当列表存在时,在列表的末尾添加值

Redis - 集合

Redis 集合是唯一字符串的无序集合。唯一意味着集合不允许在键中重复数据。

在 Redis 集合中,添加、删除和测试成员是否存在的时间复杂度为 O(1)(无论集合中包含多少元素,时间都是恒定的)。列表的最大长度为 232 - 1 个元素(4294967295,每个集合超过 40 亿个元素)。

示例

redis 127.0.0.1:6379> SADD tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mongodb 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 0 
redis 127.0.0.1:6379> SMEMBERS tutorials  
1) "mysql" 
2) "mongodb" 
3) "redis"

在上面的示例中,三个值由命令SADD插入到名为“tutorials”的 Redis 集合中。

Redis 集合命令

下表列出了一些与集合相关的基本命令。

序号 命令和描述
1 SADD key member1 [member2]

向集合中添加一个或多个成员

2 SCARD key

获取集合中成员的数量

3 SDIFF key1 [key2]

多个集合的差集

4 SDIFFSTORE destination key1 [key2]

多个集合的差集,并将结果集合存储到一个键中

5 SINTER key1 [key2]

多个集合的交集

6 SINTERSTORE destination key1 [key2]

多个集合的交集,并将结果集合存储到一个键中

7 SISMEMBER key member

确定给定值是否是集合的成员

8 SMEMBERS key

获取集合中的所有成员

9 SMOVE source destination member

将成员从一个集合移动到另一个集合

10 SPOP key

移除并返回集合中的一个随机成员

11 SRANDMEMBER key [count]

获取集合中的一个或多个随机成员

12 SREM key member1 [member2]

从集合中移除一个或多个成员

13 SUNION key1 [key2]

多个集合的并集

14 SUNIONSTORE destination key1 [key2]

多个集合的并集,并将结果集合存储到一个键中

15 SSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代集合元素

Redis - 有序集合

Redis 有序集合类似于 Redis 集合,具有存储在集合中的值的唯一特性。不同之处在于,有序集合的每个成员都与一个分数相关联,该分数用于按顺序对有序集合进行排序,从小到大的分数。

在 Redis 有序集合中,添加、删除和测试成员是否存在的时间复杂度为 O(1)(无论集合中包含多少元素,时间都是恒定的)。列表的最大长度为 232 - 1 个元素(4294967295,每个集合超过 40 亿个元素)。

示例

redis 127.0.0.1:6379> ZADD tutorials 1 redis 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 2 mongodb 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZADD tutorials 4 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES  
1) "redis" 
2) "1" 
3) "mongodb" 
4) "2" 
5) "mysql" 
6) "4" 

在上面的示例中,三个值及其分数由命令ZADD插入到名为“tutorials”的 Redis 有序集合中。

Redis 有序集合命令

下表列出了一些与有序集合相关的基本命令。

序号 命令和描述
1 ZADD key score1 member1 [score2 member2]

向有序集合中添加一个或多个成员,或者如果成员已存在则更新其分数

2 ZCARD key

获取有序集合中成员的数量

3 ZCOUNT key min max

计算有序集合中分数在给定值范围内的成员数量

4 ZINCRBY key increment member

将有序集合中成员的分数增加指定数量

5 ZINTERSTORE destination numkeys 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 ...]

多个有序集合的并集,并将结果有序集合存储到一个新的键中

20 ZSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代有序集合元素和关联的分数

Redis - HyperLogLog

Redis HyperLogLog 是一种算法,它使用随机化来提供集合中唯一元素数量的近似值,仅使用恒定且少量内存。

即使使用非常少的内存(每个键约 12 千字节,标准误差为 0.81%),HyperLogLog 也可以提供集合基数的非常好的近似值。您可以计数的项目数量没有限制,除非您接近 264 个项目。

示例

以下示例说明了 Redis HyperLogLog 的工作原理。

redis 127.0.0.1:6379> PFADD tutorials "redis"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mongodb"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mysql"  
1) (integer) 1  
redis 127.0.0.1:6379> PFCOUNT tutorials  
(integer) 3 

Redis HyperLogLog 命令

下表列出了一些与 Redis HyperLogLog 相关的基本命令。

序号 命令和描述
1 PFADD key element [element ...]

将指定的元素添加到指定的 HyperLogLog 中。

2 PFCOUNT key [key ...]

返回 HyperLogLog 在键处观察到的集合的近似基数。

3 PFMERGE destkey sourcekey [sourcekey ...]

将 N 个不同的 HyperLogLog 合并到一个中。

Redis - 发布订阅

Redis 发布/订阅实现了消息系统,其中发送者(在 redis 术语中称为发布者)发送消息,而接收者(订阅者)接收消息。消息传递的链接称为通道

在 Redis 中,客户端可以订阅任意数量的通道。

示例

以下示例解释了发布订阅的概念是如何工作的。在以下示例中,一个客户端订阅了一个名为“redisChat”的频道。

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

现在,两个客户端正在同一个名为“redisChat”的频道上发布消息,而上面订阅的客户端正在接收消息。

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"  
(integer) 1  
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by tutorials point"  
(integer) 1   
1) "message" 
2) "redisChat" 
3) "Redis is a great caching technique" 
1) "message" 
2) "redisChat" 
3) "Learn redis by tutorials point" 

Redis PubSub 命令

下表列出了一些与 Redis Pub/Sub 相关的基本命令。

序号 命令和描述
1 PSUBSCRIBE pattern [pattern ...]

订阅与给定模式匹配的频道。

2 PUBSUB subcommand [argument [argument ...]]

告知 Pub/Sub 系统的状态。例如,哪些客户端在服务器上处于活动状态。

3 PUBLISH channel message

向频道发布消息。

4 PUNSUBSCRIBE [pattern [pattern ...]]

停止监听发布到与给定模式匹配的频道的消息。

5 SUBSCRIBE channel [channel ...]

监听发布到给定频道的消息。

6 UNSUBSCRIBE [channel [channel ...]]

停止监听发布到给定频道的消息。

Redis - 事务

Redis 事务允许在一个步骤中执行一组命令。以下是事务的两个属性。

  • 事务中的所有命令都按顺序作为一个独立的操作执行。另一个客户端发出的请求不可能在 Redis 事务执行的中间被处理。

  • Redis 事务也是原子的。原子性意味着要么所有命令都被处理,要么都不被处理。

示例

Redis 事务由命令 **MULTI** 启动,然后您需要传递一个应该在事务中执行的命令列表,之后整个事务由 **EXEC** 命令执行。

redis 127.0.0.1:6379> MULTI 
OK 
List of commands here 
redis 127.0.0.1:6379> EXEC

示例

以下示例说明了如何启动和执行 Redis 事务。

redis 127.0.0.1:6379> MULTI 
OK 
redis 127.0.0.1:6379> SET tutorial redis 
QUEUED 
redis 127.0.0.1:6379> GET tutorial 
QUEUED 
redis 127.0.0.1:6379> INCR visitors 
QUEUED 
redis 127.0.0.1:6379> EXEC  
1) OK 
2) "redis" 
3) (integer) 1 

Redis 事务命令

下表显示了一些与 Redis 事务相关的基本命令。

序号 命令和描述
1 DISCARD

丢弃在 MULTI 之后发出的所有命令

2 EXEC

执行在 MULTI 之后发出的所有命令

3 MULTI

标记事务块的开始

4 UNWATCH

忘记所有被监视的键

5 WATCH key [key ...]

监视给定的键以确定 MULTI/EXEC 块的执行

Redis - 脚本

Redis 脚本用于使用 Lua 解释器评估脚本。它从 2.6.0 版开始内置于 Redis 中。用于脚本的命令是 **EVAL** 命令。

语法

以下是 **EVAL** 命令的基本语法。

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

示例

以下示例说明了 Redis 脚本是如何工作的。

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

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

杀死当前正在执行的脚本。

6 SCRIPT LOAD script

将指定的 Lua 脚本加载到脚本缓存中。

Redis - 连接

Redis 连接命令基本上用于管理客户端与 Redis 服务器的连接。

示例

以下示例说明了客户端如何向 Redis 服务器进行身份验证以及如何检查服务器是否正在运行。

redis 127.0.0.1:6379> AUTH "password" 
OK 
redis 127.0.0.1:6379> PING 
PONG 

Redis 连接命令

下表列出了一些与 Redis 连接相关的基本命令。

序号 命令和描述
1 AUTH password

使用给定的密码对服务器进行身份验证

2 ECHO message

打印给定的字符串

3 PING

检查服务器是否正在运行

4 QUIT

关闭当前连接

5 SELECT index

更改当前连接所选的数据库

Redis - 服务器

Redis 服务器命令基本上用于管理 Redis 服务器。

示例

以下示例说明了我们如何获取有关服务器的所有统计信息和信息。

redis 127.0.0.1:6379> INFO  

# Server 
redis_version:2.8.13 
redis_git_sha1:00000000 
redis_git_dirty:0 
redis_build_id:c2238b38b1edb0e2 
redis_mode:standalone 
os:Linux 3.5.0-48-generic x86_64 
arch_bits:64 
multiplexing_api:epoll 
gcc_version:4.7.2 
process_id:3856 
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe 
tcp_port:6379 
uptime_in_seconds:11554 
uptime_in_days:0 hz:10 
lru_clock:16651447 
config_file:  

# Clients 
connected_clients:1
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0  

# Memory 
used_memory:589016 
used_memory_human:575.21K 
used_memory_rss:2461696 
used_memory_peak:667312 
used_memory_peak_human:651.67K 
used_memory_lua:33792 
mem_fragmentation_ratio:4.18 
mem_allocator:jemalloc-3.6.0  

# Persistence 
loading:0 
rdb_changes_since_last_save:3 
rdb_bgsave_in_progress:0 
rdb_last_save_time:1409158561 
rdb_last_bgsave_status:ok 
rdb_last_bgsave_time_sec:0 
rdb_current_bgsave_time_sec:-1 
aof_enabled:0 
aof_rewrite_in_progress:0 
aof_rewrite_scheduled:0 
aof_last_rewrite_time_sec:-1 
aof_current_rewrite_time_sec:-1 
aof_last_bgrewrite_status:ok 
aof_last_write_status:ok  

# Stats 
total_connections_received:24 
total_commands_processed:294 
instantaneous_ops_per_sec:0 
rejected_connections:0 
sync_full:0 
sync_partial_ok:0 
sync_partial_err:0 
expired_keys:0 
evicted_keys:0 
keyspace_hits:41
keyspace_misses:82 
pubsub_channels:0 
pubsub_patterns:0 
latest_fork_usec:264  

# Replication 
role:master 
connected_slaves:0 
master_repl_offset:0 
repl_backlog_active:0 
repl_backlog_size:1048576 
repl_backlog_first_byte_offset:0 
repl_backlog_histlen:0  

# CPU 
used_cpu_sys:10.49 
used_cpu_user:4.96 
used_cpu_sys_children:0.00 
used_cpu_user_children:0.01  

# Keyspace 
db0:keys = 94,expires = 1,avg_ttl = 41638810 
db1:keys = 1,expires = 0,avg_ttl = 0 
db3:keys = 1,expires = 0,avg_ttl = 0 

Redis 服务器命令

下表列出了一些与 Redis 服务器相关的基本命令。

序号 命令和描述
1 BGREWRITEAOF

异步重写追加仅文件

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

根据完整的 Redis 命令提取键

12 BGSAVE

异步将数据集保存到磁盘

13 COMMAND INFO command-name [command-name ...]

获取特定 Redis 命令详细信息的数组

14 CONFIG GET parameter

获取配置参数的值

15 CONFIG REWRITE

使用内存中的配置重写配置文件

16 CONFIG SET parameter value

将配置参数设置为给定值

17 CONFIG RESETSTAT

重置 INFO 返回的统计信息

18 DBSIZE

返回所选数据库中的键的数量

19 DEBUG OBJECT key

获取有关键的调试信息

20 DEBUG SEGFAULT

使服务器崩溃

21 FLUSHALL

从所有数据库中删除所有键

22 FLUSHDB

从当前数据库中删除所有键

23 INFO [section]

获取有关服务器的信息和统计信息

24 LASTSAVE

获取上次成功保存到磁盘的 UNIX 时间戳

25 MONITOR

实时监听服务器接收到的所有请求

26 ROLE

返回实例在复制上下文中的角色

27 SAVE

同步将数据集保存到磁盘

28 SHUTDOWN [NOSAVE] [SAVE]

同步将数据集保存到磁盘,然后关闭服务器

29 SLAVEOF host port

使服务器成为另一个实例的从属服务器,或将其提升为主服务器

30 SLOWLOG subcommand [argument]

管理 Redis 慢查询日志

31 SYNC

用于复制的命令

32 TIME

返回当前服务器时间

Redis - 备份

Redis **SAVE** 命令用于创建当前 Redis 数据库的备份。

语法

以下是 redis **SAVE** 命令的基本语法。

127.0.0.1:6379> SAVE 

示例

以下示例创建当前数据库的备份。

127.0.0.1:6379> SAVE  
OK 

此命令将在您的 Redis 目录中创建一个 **dump.rdb** 文件。

恢复 Redis 数据

要恢复 Redis 数据,请将 Redis 备份文件 (dump.rdb) 移动到您的 Redis 目录并启动服务器。要获取您的 Redis 目录,请使用 Redis 的 **CONFIG** 命令,如下所示。

127.0.0.1:6379> CONFIG get dir  
1) "dir" 
2) "/user/tutorialspoint/redis-2.8.13/src" 

在上述命令的输出中,** /user/tutorialspoint/redis-2.8.13/src ** 是 Redis 服务器安装的目录。

Bgsave

要创建 Redis 备份,还可以使用备用命令 **BGSAVE**。此命令将启动备份过程并在后台运行。

示例

127.0.0.1:6379> BGSAVE  
Background saving started

Redis - 安全

Redis 数据库可以被保护,以便任何建立连接的客户端都需要在执行命令之前进行身份验证。要保护 Redis,您需要在配置文件中设置密码。

示例

以下示例显示了保护 Redis 实例的步骤。

127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) "" 

默认情况下,此属性为空,这意味着未为此实例设置密码。您可以通过执行以下命令来更改此属性。

127.0.0.1:6379> CONFIG set requirepass "tutorialspoint" 
OK 
127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) "tutorialspoint" 

设置密码后,如果任何客户端在未进行身份验证的情况下运行命令,则会返回 **(error) NOAUTH Authentication required.** 错误。因此,客户端需要使用 **AUTH** 命令进行身份验证。

语法

以下是 **AUTH** 命令的基本语法。

127.0.0.1:6379> AUTH password 

示例

127.0.0.1:6379> AUTH "tutorialspoint" 
OK 
127.0.0.1:6379> SET mykey "Test value" 
OK 
127.0.0.1:6379> GET mykey 
"Test value"

Redis - 基准测试

Redis 基准测试是用于通过同时运行 n 个命令来检查 Redis 性能的实用程序。

语法

以下是 Redis 基准测试的基本语法。

redis-benchmark [option] [option value] 

示例

以下示例通过调用 100000 个命令来检查 Redis。

redis-benchmark -n 100000  

PING_INLINE: 141043.72 requests per second 
PING_BULK: 142857.14 requests per second 
SET: 141442.72 requests per second 
GET: 145348.83 requests per second 
INCR: 137362.64 requests per second 
LPUSH: 145348.83 requests per second 
LPOP: 146198.83 requests per second 
SADD: 146198.83 requests per second 
SPOP: 149253.73 requests per second 
LPUSH (needed to benchmark LRANGE): 148588.42 requests per second 
LRANGE_100 (first 100 elements): 58411.21 requests per second 
LRANGE_300 (first 300 elements): 21195.42 requests per second 
LRANGE_500 (first 450 elements): 14539.11 requests per second 
LRANGE_600 (first 600 elements): 10504.20 requests per second 
MSET (10 keys): 93283.58 requests per second 

以下是 Redis 基准测试中可用选项的列表。

序号 选项 描述 默认值
1 -h 指定服务器主机名 127.0.0.1
2 -p 指定服务器端口 6379
3 -s 指定服务器套接字
4 -c 指定并行连接数 50
5 -n 指定请求总数 10000
6 -d 指定 SET/GET 值的数据大小(以字节为单位) 2
7 -k 1=保持活动,0=重新连接 1
8 -r 对 SET/GET/INCR 使用随机键,对 SADD 使用随机值
9 -p 管道 <numreq> 个请求 1
10 -h 指定服务器主机名
11 -q 强制 Redis 静默。仅显示查询/秒值
12 --csv 以 CSV 格式输出
13 -l 生成循环,永远运行测试
14 -t 仅运行以逗号分隔的测试列表
15 -I 空闲模式。只打开 N 个空闲连接并等待

示例

以下示例显示了 Redis 基准测试实用程序中的多个用法选项。

redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q  

SET: 146198.83 requests per second 
LPUSH: 145560.41 requests per second 

Redis - 客户端连接

Redis 在配置的监听 TCP 端口和启用的 Unix 套接字上接受客户端的连接。当接受新的客户端连接时,将执行以下操作:

  • 客户端套接字被置于非阻塞状态,因为 Redis 使用多路复用和非阻塞 I/O。

  • TCP_NODELAY 选项被设置以确保我们的连接没有延迟。

  • 创建可读文件事件,以便 Redis 能够在套接字上可读新数据时立即收集客户端查询。

最大客户端数

在 Redis 配置 (redis.conf) 中,有一个名为 **maxclients** 的属性,它描述了可以连接到 Redis 的最大客户端数。

以下是命令的基本语法。

config get maxclients  

1) "maxclients" 
2) "10000" 

默认情况下,此属性设置为 10000(取决于操作系统的最大文件描述符限制),但您可以更改此属性。

示例

在以下示例中,我们在启动服务器时将最大客户端数设置为 100000。

redis-server --maxclients 100000 

客户端命令

序号 命令 描述
1 CLIENT LIST 返回连接到 Redis 服务器的客户端列表
2 CLIENT SETNAME 为当前连接分配一个名称

3 CLIENT GETNAME 返回当前连接的名称,该名称由 CLIENT SETNAME 设置。
4 CLIENT PAUSE 这是一个连接控制命令,可以暂停所有 Redis 客户端指定的时间(以毫秒为单位)。
5 CLIENT KILL 此命令关闭给定的客户端连接。

Redis - 管道

Redis 是一个 TCP 服务器,支持请求/响应协议。在 Redis 中,请求通过以下步骤完成:

  • 客户端向服务器发送查询,并通常以阻塞方式从套接字读取服务器响应。

  • 服务器处理命令并将响应发送回客户端。

流水线的含义

流水线的基本含义是,客户端可以向服务器发送多个请求,而无需等待回复,最后一步读取所有回复。

示例

要检查 Redis 流水线,只需启动 Redis 实例并在终端中键入以下命令。

$(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR 
visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379  
+PONG 
+OK 
redis 
:1 
:2 
:3 

在上面的示例中,我们将使用 **PING** 命令检查 Redis 连接。我们设置了一个名为 **tutorial** 的字符串,其值为 **redis**。稍后,我们获取该键的值并三次递增访问者数量。在结果中,我们可以看到所有命令都一次提交给 Redis,Redis 一步输出所有命令的结果。

流水线的优势

此技术的优势在于协议性能得到了极大的提升。流水线带来的加速效果从本地连接的五倍到慢速互联网连接的至少一百倍不等。

Redis - 分区

分区是指将数据拆分为多个 Redis 实例的过程,以便每个实例仅包含键的子集。

分区的优势

  • 它允许使用许多计算机内存总和来创建更大的数据库。如果没有分区,则受限于单个计算机可以支持的内存量。

  • 它允许将计算能力扩展到多个核心和多台计算机,并将网络带宽扩展到多台计算机和网络适配器。

分区的缺点

  • 通常不支持涉及多个键的操作。例如,如果两个集合存储在映射到不同 Redis 实例的键中,则无法执行这两个集合的交集。

  • 无法使用涉及多个键的 Redis 事务。

  • 分区粒度是键,因此无法对具有单个巨大键(例如非常大的有序集合)的数据集进行分片。

  • 使用分区时,数据处理会变得更加复杂。例如,您必须处理多个 RDB/AOF 文件,并且要获取数据的备份,您需要聚合来自多个实例和主机的持久性文件。

  • 添加和删除容量可能很复杂。例如,Redis 集群主要支持数据透明重新平衡,并能够在运行时添加和删除节点。但是,其他系统(如客户端分区和代理)不支持此功能。一种称为 **预分片** 的技术在这方面有所帮助。

分区的类型

Redis 中提供了两种分区类型。假设我们有四个 Redis 实例 R0、R1、R2、R3 以及许多表示用户的键,如 user:1、user:2 等。

范围分区

范围分区是通过将对象的范围映射到特定的 Redis 实例来实现的。假设在我们的示例中,ID 为 0 到 10000 的用户将进入实例 R0,而 ID 为 10001 到 20000 的用户将进入实例 R1,依此类推。

哈希分区

在这种类型的分区中,使用哈希函数(例如模数函数)将键转换为数字,然后将数据存储在不同的 Redis 实例中。

Redis - Java

在 Java 程序中开始使用 Redis 之前,您需要确保机器上已安装 Redis Java 驱动程序和 Java。您可以查看我们的 Java 教程,了解如何在机器上安装 Java。

安装

现在,让我们看看如何设置 Redis Java 驱动程序。

  • 您需要从路径 下载 jedis.jar 下载 jar 包。请确保下载最新版本。

  • 您需要将 **jedis.jar** 包含到您的类路径中。

连接到 Redis 服务器

import redis.clients.jedis.Jedis; 

public class RedisJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //check whether server is running or not 
      System.out.println("Server is running: "+jedis.ping()); 
   } 
} 

现在,让我们编译并运行上述程序以测试与 Redis 服务器的连接。您可以根据需要更改路径。我们假设当前版本的 **jedis.jar** 位于当前路径中。

$javac RedisJava.java 
$java RedisJava 
Connection to server sucessfully 
Server is running: PONG

Redis Java 字符串示例

import redis.clients.jedis.Jedis; 

public class RedisStringJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //set the data in redis string 
      jedis.set("tutorial-name", "Redis tutorial"); 
      // Get the stored data and print it 
      System.out.println("Stored string in redis:: "+ jedis.get("tutorialname")); 
   } 
}

现在,让我们编译并运行上述程序。

$javac RedisStringJava.java 
$java RedisStringJava 
Connection to server sucessfully 
Stored string in redis:: Redis tutorial 

Redis Java 列表示例

import redis.clients.jedis.Jedis; 

public class RedisListJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      
      //store data in redis list 
      jedis.lpush("tutorial-list", "Redis"); 
      jedis.lpush("tutorial-list", "Mongodb"); 
      jedis.lpush("tutorial-list", "Mysql"); 
      // Get the stored data and print it 
      List<String> list = jedis.lrange("tutorial-list", 0 ,5); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("Stored string in redis:: "+list.get(i)); 
      } 
   } 
} 

现在,让我们编译并运行上述程序。

$javac RedisListJava.java 
$java RedisListJava 
Connection to server sucessfully 
Stored string in redis:: Redis 
Stored string in redis:: Mongodb 
Stored string in redis:: Mysql

Redis Java 键示例

import redis.clients.jedis.Jedis; 

public class RedisKeyJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //store data in redis list 
      // Get the stored data and print it 
      List<String> list = jedis.keys("*"); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("List of stored keys:: "+list.get(i)); 
      } 
   } 
}

现在,让我们编译并运行上述程序。

$javac RedisKeyJava.java 
$java RedisKeyJava 
Connection to server sucessfully 
List of stored keys:: tutorial-name 
List of stored keys:: tutorial-list 

Redis - PHP

在 PHP 程序中开始使用 Redis 之前,您需要确保机器上已安装 Redis PHP 驱动程序和 PHP。您可以查看 PHP 教程,了解如何在机器上安装 PHP。

安装

现在,让我们检查如何设置 Redis PHP 驱动程序。

您需要从 github 仓库 https://github.com/nicolasff/phpredis 下载 phpredis。下载完成后,将文件解压到 phpredis 目录。在 Ubuntu 上,安装以下扩展。

cd phpredis 
sudo phpize 
sudo ./configure 
sudo make 
sudo make install 

现在,将“modules”文件夹的内容复制并粘贴到 PHP 扩展目录中,并在 **php.ini** 中添加以下行。

extension = redis.so

现在,您的 Redis PHP 安装已完成。

连接到 Redis 服务器

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //check whether server is running or not 
   echo "Server is running: ".$redis->ping(); 
?>

程序执行后,将产生以下结果。

Connection to server sucessfully 
Server is running: PONG 

Redis PHP 字符串示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //set the data in redis string 
   $redis->set("tutorial-name", "Redis tutorial"); 
   // Get the stored data and print it 
   echo "Stored string in redis:: " .$redis→get("tutorial-name"); 
?>

执行上述程序后,将产生以下结果。

Connection to server sucessfully 
Stored string in redis:: Redis tutorial 

Redis php 列表示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //store data in redis list 
   $redis->lpush("tutorial-list", "Redis"); 
   $redis->lpush("tutorial-list", "Mongodb"); 
   $redis->lpush("tutorial-list", "Mysql");  
   
   // Get the stored data and print it 
   $arList = $redis->lrange("tutorial-list", 0 ,5); 
   echo "Stored string in redis:: "; 
   print_r($arList); 
?>

执行上述程序后,将产生以下结果。

Connection to server sucessfully 
Stored string in redis:: 
Redis 
Mongodb 
Mysql 

Redis PHP 键示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   // Get the stored keys and print it 
   $arList = $redis->keys("*"); 
   echo "Stored keys in redis:: " 
   print_r($arList); 
?>

程序执行后,将产生以下结果。

Connection to server sucessfully 
Stored string in redis:: 
tutorial-name 
tutorial-list 
广告