Redis – 快速指南

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 桌面管理器

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

打开下载的包并安装。

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

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"

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

每个哈希最多可以存储 2 个32 – 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 Sets 是一个无序的字符串集合。在 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 Sorted Sets 类似于 Redis Sets,非重复的字符串集合。不同之处在于,Sorted Set 的每个成员都与一个分数相关联,该分数用于从最小到最大分数排序的有序集合。虽然成员是独一无二的,但分数可能会重复。

例子

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是关键。如果键被删除,则命令的输出将为(整数)1,否则为(整数)0。

Redis 键命令

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

Sr.No 命令和描述
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 – 字符串

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 中管理字符串的一些基本命令。

Sr.No 命令和描述
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 – 哈希

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"

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

Redis 哈希命令

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

Sr.No 命令和描述
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 列出命令

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

Sr.No 命令和描述
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 Sets 是唯一字符串的无序集合。唯一意味着集合不允许在一个键中重复数据。

在 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 设置命令

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

Sr.No 命令和描述
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 Sorted Sets 类似于 Redis Sets,具有将值存储在集合中的独特特征。不同之处在于,Sorted Set 的每个成员都与一个分数相关联,该分数用于从最小到最大分数排序的有序集合。

在 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 排序集命令

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

Sr.No 命令和描述
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 是一种使用随机化的算法,以便仅使用常量和少量内存来提供集合中唯一元素数量的近似值。

HyperLogLog 提供了一个非常好的集合基数近似值,即使使用每个键 12 KB 左右的非常少量的内存,标准误差为 0.81%。您可以计算的项目数量没有限制,除非您接近 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 相关的基本命令。

Sr.No 命令和描述
1 PFADD key element [element …]

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

2 PFCOUNT key [key …]

返回 HyperLogLog 在 key(s) 处观察到的集合的近似基数。

3 PFMERGE destkey sourcekey [sourcekey …]

将 N 个不同的 HyperLogLog 合并为一个。

Redis – 发布 订阅

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

在 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 发布订阅命令

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

Sr.No 命令和描述
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 事务相关的基本命令。

Sr.No 命令和描述
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 脚本相关的基本命令。

Sr.No 命令和描述
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 连接相关的基本命令。

Sr.No 命令和描述
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 服务器相关的基本命令。

Sr.No 命令和描述
1 BGREWRITEAOF

异步重写 append-only 文件

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服务器的目录。

保存

要创建 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" 

设置密码后,如果有任何客户端在没有身份验证的情况下运行命令,则(错误)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 benchmark 是通过同时运行 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 基准测试中的可用选项列表。

Sr.No 选项 描述 默认值
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 -一世 空闲模式。只需打开 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 

客户端命令

Sr.No 命令 描述
1 客户名单 返回连接到 Redis 服务器的客户端列表
2 客户端名称 为当前连接分配一个名称
3 客户名称 返回由 CLIENT SETNAME 设置的当前连接的名称
4 客户暂停 这是一个连接控制命令,能够在指定的时间量(以毫秒为单位)暂停所有 Redis 客户端
5 客户端杀 此命令关闭给定的客户端连接。

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 Cluster 支持大部分透明的数据重新平衡,能够在运行时添加和删除节点。但是,客户端分区和代理等其他系统不支持此功能。一种称为预分片的技术在这方面有所帮助。

分区类型

Redis 中有两种可用的分区类型。假设我们有四个 Redis 实例,R0、R1、R2、R3 和许多代表用户的键,如 user:1、user:2、…等等。

范围分区

范围分区是通过将对象范围映射到特定 Redis 实例来实现的。假设在我们的示例中,ID 0 到 ID 10000 的用户将进入实例 R0,而 ID 10001 到 ID 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 

觉得文章有用?

点个广告表达一下你的爱意吧 !😁