Redis 简明教程

Redis - Quick Guide

Redis - Overview

Redis 是一款开源的高级键值存储,也是用于构建高性能可扩展 Web 应用程序的极佳解决方案。

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

  1. Redis 彻底将其数据库保存在内存中,仅使用磁盘进行持久化。

  2. 与众多键值数据存储相比,Redis 拥有相对丰富的数据类型集。

  3. Redis 可以将数据复制到任意数量的从属。

Redis Advantages

以下是 Redis 的一些优势。

  1. Exceptionally fast − Redis 非常快,并且每秒可执行约 110000 个 SET 操作和 81000 个 GET 操作。

  2. Supports rich data types − Redis 原生支持开发人员熟知的大多数数据类型,例如列表、集合、有序集合和哈希。这使得解决各种问题变得容易,因为我们知道哪个问题可以通过哪个数据类型得到更好的处理。

  3. Operations are atomic − 所有 Redis 操作都是原子的,这确保了如果两个客户端并发访问,Redis 服务器将收到更新后的值。

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

Redis Versus Other Key-value Stores

  1. Redis 是键值数据库中一项不同的演进路径,其中值可以包含更复杂的数据类型,并针对这些数据类型定义了原子操作。

  2. Redis 是一款存储在磁盘数据库中的内存数据库,因此它代表了一种不同的权衡,其中实现了极高的写入和读取速度,但以数据集合不能大于内存的限制为代价。

  3. 内存数据库的另一个优势是,与磁盘上的相同数据结构相比,内存中的复杂数据结构表示更容易操作。因此,Redis 能够以极低的内部复杂性执行大量操作。

Redis - Environment

在本章中,您将了解 Redis 的环境设置。

Install Redis on Ubuntu

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

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

这将在您的计算机上安装 Redis。

Start Redis

$redis-server

Check If Redis is Working

$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 已成功安装在您的计算机上。

Install Redis Desktop Manager on Ubuntu

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

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

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

Redis - Configuration

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

Syntax

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

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

Example

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

要获取所有配置设置,请将 CONFIG_SETTING_NAME 替换为 *

Example

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) ""

Edit Configuration

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

Syntax

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

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

Example

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 - Data Types

Redis 支持 5 种数据类型。

Strings

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

Example

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 中的字符串值。

Note − 字符串值的最大长度为 512 兆字节。

Hashes

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

Example

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 亿个)。

Lists

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

Example

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 亿个元素)。

Sets

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

Example

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"

Note − 在上述示例中, rabitmq 被添加了两次,但是由于集合的唯一特性,它只会添加一次。

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

Sorted Sets

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

Example

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 - Commands

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

要在 Redis 服务器上运行命令,您需要一个 Redis 客户端。Redis 软件包中提供 Redis 客户端,我们已经安装过了。

Syntax

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

$redis-cli

Example

下面的示例说明如何启动 Redis 客户端。

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

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

在上面的示例中,我们连接到在本地计算机上运行的 Redis 服务器,并执行了一个命令 PING ,可以检查服务器是否在运行。

Run Commands on the Remote Server

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

Syntax

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

Example

下面的示例显示如何连接到 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 - Keys

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

Syntax

redis 127.0.0.1:6379> COMMAND KEY_NAME

Example

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

在以上示例中, DEL 是命令,而 tutorialspoint 是键。如果删除了键,则该命令的输出将为 (整数) 1,否则为 (整数) 0。

Redis Keys Commands

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

Sr.No

Command & Description

1

DEL key 如果存在键,则此命令将删除该键。

2

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

3

EXISTS key 此命令检查该键是否存在。

4

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

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 - Strings

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

Syntax

redis 127.0.0.1:6379> COMMAND KEY_NAME

Example

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

在上述示例中, SETGET 是命令,而 tutorialspoint 是密钥。

Redis Strings Commands

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

Sr.No

Command & Description

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 将键的整数值增加一

16

INCRBY key increment 将键的整数值增加指定的量

17

INCRBYFLOAT key increment 将键的浮点值增加指定的量

18

DECR key 将键的整数值减一

19

DECRBY key decrement 将键的整数值减去指定的数字

20

APPEND key value 向键追加值

Redis - Hashes

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

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

Example

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"

在上面的示例中,我们在名为“tutorialspoint”的哈希中设置了 Redis 教程详细信息(名称、说明、喜欢数、访问数)。

Redis Hash Commands

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

Sr.No

Command & Description

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 - Lists

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

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

Example

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 在名为“教程”的 Redis 列表中插入了三个值。

Redis Lists Commands

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

Sr.No

Command & Description

1

BLPOP key1 [key2 ] timeout 移除并获取列表中的第一个元素,或阻塞直到出现元素

2

BRPOP key1 [key2 ] timeout 移除并获取列表中的最后一个元素,或阻塞直到出现元素

3

BRPOPLPUSH source destination timeout 从列表中弹出一个值,将其推入另一个列表并返回该值;或阻塞直到出现元素

4

LINDEX key index 根据其索引从列表中获取一个元素

5

link:../redis/lists_linsert.html[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

Redis - Sets

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

在 Redis 集合中添加、移除,以及测试成员是否存在的时间复杂度为 O(1)(常数时间,与集合中包含的元素数量无关)。列表的最大长度是 232 - 1 个元素(4294967295,每个集合超过 40 亿个元素)。

Example

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 向名为“教程”的 Redis 集合中插入三个值。

Redis Sets Commands

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

Sr.No

Command & Description

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 - Sorted Sets

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

在 Redis 有序集合中,以 O(1)(与集合内部包含的元素数量无关的固定时间)添加、移除和测试成员的存在。列表的最大长度为 232 - 1 个元素(4294967295,每个集合超过 40 亿个元素)。

Example

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 Sorted Sets Commands

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

Sr.No

Command & Description

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 KB),HyperLogLog 也可以很好地近似集合的基数,标准误为 0.81%。您可以计数的项目数量没有限制,除非达到 264 个项目。

Example

下面的示例说明 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 Commands

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

Sr.No

Command & Description

1

PFADD key element [element …​] 将指定元素添加到指定的 HyperLogLog。

2

PFCOUNT key [key …​] 返回 HyperLogLog 使用的关键(key)观察的集合(集)的大约基数。

3

PFMERGE destkey sourcekey [sourcekey …​] 将 N 个不同的 HyperLogLogs 合并为一个。

Redis - Publish Subscribe

Redis Pub/Sub 实现消息系统,其中发送者(在 redis 术语中称为发布者)发送消息,而接收者(订阅者)收到消息。传输消息的链接称为 channel

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

Example

下面的示例解释了发布订阅概念的工作原理。在以下示例中,一个客户端订阅名为“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 Commands

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

Sr.No

Command & Description

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 - Transactions

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

  1. 事务中的所有命令按顺序作为单个隔离操作执行。在 Redis 事务的执行过程中,由其他客户端发出的请求不可能得到处理。

  2. Redis 事务也是原子的。原子性意味着所有命令都会被处理,或者都不会被处理。

Sample

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

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

Example

以下示例说明了如何启动和执行 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 Transaction Commands

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

Sr.No

Command & Description

1

DISCARD 放弃 MULTI 之后发出的所有命令

2

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

3

MULTI 标记事务块的开始

4

UNWATCH 忽略所有被监视的键

5

WATCH key [key …​] 监视给定键以确定 MULTI/EXEC 块的执行

Redis - Scripting

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

Syntax

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

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

Example

以下示例说明了 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 Scripting Commands

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

Sr.No

Command & Description

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 - Connections

Redis 连接命令主要用于管理客户端与 Redis 服务器之间的连接。

Example

下面的示例说明客户端如何向 Redis 服务器验证它自己并检查服务器是否在运行。

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

Redis Connection Commands

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

Sr.No

Command & Description

1

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

2

ECHO message 打印给定的字符串

3

PING 检查服务器是否在运行

4

QUITCloses the current connection

5

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

Redis - Server

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

Example

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

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 Server Commands

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

Sr.No

Command & Description

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

SYNCCommand used for replication

32

TIME 返回当前服务器时间

Redis - Backup

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

Syntax

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

127.0.0.1:6379> SAVE

Example

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

127.0.0.1:6379> SAVE
OK

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

Restore Redis Data

要还原 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 。此命令将启动备份进程,并在后台运行此进程。

Example

127.0.0.1:6379> BGSAVE
Background saving started

Redis - Security

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

Example

以下示例演示了保护 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 . error 将返回。因此,客户端需要使用 AUTH 命令来验证自身。

Syntax

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

127.0.0.1:6379> AUTH password

Example

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 - Benchmarks

Redis 基准是通过同时运行 n 个命令来检查 Redis 性能的实用工具。

Syntax

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

redis-benchmark [option] [option value]

Example

以下示例通过调用 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 基准中可用选项的列表。

Sr.No

Option

Description

Default Value

1

-h

Specifies server host name

127.0.0.1

2

-p

Specifies server port

6379

3

-s

Specifies server socket

4

-c

指定并行连接数

50

5

-n

指定请求总数

10000

6

-d

指定 SET/GET 值在字节中的数据大小

2

7

-k

1=keep alive, 0=reconnect

1

8

-r

使用随机键进行 SET/GET/INCR,使用随机值进行 SADD

9

-p

Pipeline <numreq> requests

1

10

-h

Specifies server host name

11

-q

强制 Redis 静音。仅显示查询/秒值

12

--csv

Output in CSV format

13

-l

生成循环,无限期地运行测试

14

-t

仅运行逗号分隔的测试列表

15

-I

空闲模式。仅打开 N 个空闲连接并等待

Example

以下示例显示了 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 - Client Connection

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

  1. 由于 Redis 使用多路复用和非阻塞 I/O,因此将客户端套接字置于非阻塞状态。

  2. 设置 TCP_NODELAY 选项以确保我们的连接中没有延迟。

  3. 创建可读取的文件事件,以便 Redis 能够在套接字上准备好读取新数据后立即收集客户端查询。

Maximum Number of Clients

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

以下是命令的基本句法。

config get maxclients

1) "maxclients"
2) "10000"

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

Example

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

redis-server --maxclients 100000

Client Commands

Sr.No

Command

Description

1

CLIENT LIST

返回连接到 Redis 服务器的客户端列表

2

CLIENT SETNAME

将名称分配给当前连接

3

CLIENT GETNAME

返回通过 CLIENT SETNAME 设置的当前连接的名称

4

CLIENT PAUSE

这是一个连接控制命令,能够将所有 Redis 客户端挂起指定时间(以毫秒为单位)

5

CLIENT KILL

此命令关闭给定的客户端连接。

Redis - Pipelining

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

  1. 客户端发送查询到服务器,然后再从套接字(通常以阻塞方式)读取服务器响应。

  2. 服务器处理命令并将响应发回给客户端。

Meaning of Pipelining

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

Example

要检查 Redis Pipelining,只需启动 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 以单步提供了所有命令的输出。

Benefits of Pipelining

此技术的好处是大幅提升了协议性能。Pipelining 带来的加速倍数范围从连接到 localhost 上的 5 倍,到慢速互联网连接上的至少 100 倍。

Redis - Partitioning

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

Benefits of Partitioning

  1. 它允许基于多台计算机内存总和的更大数据库。不分区的话,你将受到一台计算机能够支持的内存大小的限制。

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

Disadvantages of Partitioning

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

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

  3. 分区的颗粒度是键,因此无法使用一个很庞大的键(例如很大的排序集)对数据集进行分片。

  4. 使用分区时,数据处理更加复杂。例如,你必须处理多个 RDB/AOF 文件,并且为了获取数据的备份,你需要汇总来自多个实例和主机的持久文件。

  5. 增减容量可能很复杂。例如,Redis 集群主要支持数据透明重新平衡,并且能够在运行时增减节点。但是,其他系统(比如客户端分区和代理)不支持此特性。一种称为 Presharding 的技术对此有所帮助。

Types of Partitioning

Redis 有两种分区类型。假设我们有四个 Redis 实例 R0、R1、R2、R3 和多个密钥,表示用户,比如 user:1、user:2、…​ 等。

Range Partitioning

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

Hash Partitioning

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

Redis - Java

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

Installation

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

  1. 您需要从路径 Download jedis.jar 下载 jar。务必下载最新版本。

  2. 您需要将 jedis.jar 包含在类路径中。

Connect to Redis Server

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 String Example

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 List Example

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 Keys Example

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。

Installation

现在,让我们检查如何设置 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 安装已完成

Connect to Redis Server

<?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 String Example

<?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 List Example

<?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 Keys Example

<?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