Redis - 快速指南
Redis - 概述
Redis是一个开源的高级键值存储,是构建高性能,可伸缩的Web应用程序的适当解决方案。
Redis有三个主要特点,使它与众不同。
-
Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
-
与许多键值数据存储相比,Redis具有相对丰富的数据类型集。
-
Redis可以将数据复制到任意数量的从属服务器。
Redis的优势
以下是Redis的一些优点。
-
异常快 - Redis 速度非常快,每秒可执行大约110000 SET,每秒大约81000 GET。
-
支持丰富的数据类型 - Redis本身支持开发人员已经知道的大多数数据类型,例如list,set,sorted set和hashes。这使得解决各种问题变得容易,因为我们知道哪种数据类型可以更好地处理哪个问题。
-
操作是原子操作 - 所有Redis操作都是原子操作,这确保了如果两个客户端同时访问,Redis服务器将接收更新的值。
-
多实用工具 - Redis是一个多实用工具,可用于许多用例,如缓存,消息队列(Redis本身支持发布/订阅),应用程序中的任何短期数据,如Web应用程序会话,网页命中计数等
Redis与其他键值商店相比
-
Redis是键值DB中不同的演化路径,其中值可以包含更复杂的数据类型,并在这些数据类型上定义原子操作。
-
Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一种不同的折衷方案,其中通过不能大于内存的数据集的限制实现了非常高的写入和读取速度。
-
内存数据库的另一个优点是,与磁盘上的相同数据结构相比,复杂数据结构的内存表示更易于操作。因此,Redis可以做很多内部复杂性。
Redis - 环境
在本章中,您将了解Redis的环境设置。
在Ubuntu上安装Redis
要在Ubuntu上安装Redis,请转到终端并键入以下命令 -
<span style="color:#313131">$sudo apt-get update
$sudo apt-get install redis-server
</span>
这将在您的计算机上安装Redis。
启动Redis
<span style="color:#313131">$redis-server
</span>
检查Redis是否正常工作
<span style="color:#313131">$redis-cli
</span>
这将打开一个redis提示符。
<span style="color:#313131">redis 127.0.0.1:6379>
</span>
在上面的提示中,127.0.0.1是您机器的IP地址,6379是Redis服务器运行的端口。现在键入以下PING命令。
<span style="color:#313131">redis 127.0.0.1:6379> ping
PONG
</span>
这表明Redis已成功安装在您的计算机上。
在Ubuntu上安装Redis Desktop Manager
要在Ubuntu上安装Redis桌面管理器,只需从https://redisdesktop.com/download下载该软件包即可
打开下载的软件包并进行安装。
Redis桌面管理器将为您提供管理Redis密钥和数据的UI。
Redis - 配置
在Redis中,Redis的根目录中有一个配置文件(redis.conf)。虽然您可以通过Redis CONFIG命令获取和设置所有Redis配置。
句法
以下是Redis CONFIG命令的基本语法。
<span style="color:#313131">redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
</span>
例
<span style="color:#313131">redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
</span>
要获取所有配置设置,请使用*代替CONFIG_SETTING_NAME
例
<span style="color:#313131">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) ""
</span>
编辑配置
要更新配置,可以直接编辑redis.conf文件,也可以通过CONFIG set命令更新配置。
语法
以下是CONFIG SET命令的基本语法。
<span style="color:#313131">redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
</span>
例
<span style="color:#313131">redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
</span>
Redis - 数据类型
Redis支持5种类型的数据。
字符串
Redis字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的已知长度不是由任何特殊的终止字符决定的。因此,您可以在一个字符串中存储最多512兆字节的内容。
例
<span style="color:#313131">redis 127.0.0.1:6379> SET name "tutorialspoint"
OK
redis 127.0.0.1:6379> GET name
"tutorialspoint"
</span>
在上面的示例中,SET和GET是Redis命令,name是Redis中使用的键,tutorialspoint是存储在Redis中的字符串值。
注 - 字符串值的长度最大为512 MB。
Hashes
RedisHashes是键值对的集合。Redis Hashes是字符串字段和字符串值之间的映射。因此,它们用于表示对象。
例
<span style="color:#313131">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"
</span>
在上面的示例中,散列数据类型用于存储包含用户的基本信息的用户对象。这里HMSET,HGETALL是Redis的命令,而user-1是关键。
每个哈希可以存储多达2 个32 - 1个字段 - 值对(超过40亿)。
列表
Redis列表只是字符串列表,按插入顺序排序。您可以在头部或尾部的Redis列表中添加元素。
例
<span style="color:#313131">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"
</span>
列表的最大长度为2 32 - 1个元素(4294967295,每个列表超过40亿个元素)。
集合
Redis集是一个无序的字符串集合。在Redis中,您可以添加,删除和测试O(1)时间复杂度中成员的存在。
例
<span style="color:#313131">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"
</span>
注 - 在上面的示例中,rabitmq添加了两次,但由于集的唯一属性,它只添加一次。
集合中的最大成员数为2 32 - 1(4294967295,每组成员超过40亿)。
排序集
Redis排序集类似于Redis集,非重复字符串集合。不同之处在于,排序集的每个成员都与一个分数相关联,该分数用于从最小分数到最大分数获取有序排序集。虽然成员是独特的,但可以重复分数。
例
<span style="color:#313131">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"
</span>
Redis - 命令
Redis命令用于在Redis服务器上执行某些操作。
要在Redis服务器上运行命令,您需要Redis客户端。Redis客户端在我们之前安装的Redis软件包中提供。
语法
以下是Redis客户端的基本语法。
<span style="color:#313131">$redis-cli
</span>
例
以下示例说明了我们如何启动Redis客户端。
要启动Redis客户端,请打开终端并键入命令redis-cli。这将连接到您的本地服务器,现在您可以运行任何命令。
<span style="color:#313131">$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
</span>
在上面的示例中,我们连接到在本地计算机上运行的Redis服务器并执行命令PING,该命令检查服务器是否正在运行。
在远程服务器上运行命令
要在Redis远程服务器上运行命令,您需要通过相同的客户端redis-cli连接到服务器
语法
<span style="color:#313131">$ redis-cli -h host -p port -a password
</span>
例
以下示例显示如何连接到Redis远程服务器,在主机127.0.0.1上运行,端口6379并具有密码mypass。
<span style="color:#313131">$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
</span>
Redis -Keys命令
Redis键命令用于管理Redis中的键。以下是使用redis键命令的语法。
语法
<span style="color:#313131">redis 127.0.0.1:6379> COMMAND KEY_NAME
</span>
例
<span style="color:#313131">redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> DEL tutorialspoint
(integer) 1
</span>
在上面的例子中,DEL是命令,而tutorialspoint是关键。如果删除了密钥,那么命令的输出将是(整数)1,否则它将是(整数)0。
Redis Keys命令
下表列出了与键相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | DEL键 此命令删除密钥(如果存在)。 |
2 | DUMP键 此命令返回存储在指定键处的值的序列化版本。 |
3 | EXISTS键 此命令检查密钥是否存在。 |
4 | EXPIRE键秒 设置指定时间后密钥的到期时间。 |
五 | EXPIREAT键时间戳 设置指定时间后密钥的到期时间。这里的时间是Unix时间戳格式。 |
6 | PEXPIRE键毫秒 设置密钥的到期时间(以毫秒为单位)。 |
7 | PEXPIREAT键毫秒时间戳 设置Unix时间戳中密钥的到期时间,以毫秒为单位。 |
8 | KEYS模式 查找与指定模式匹配的所有键。 |
9 | 移动密钥数据库 将密钥移动到另一个数据库。 |
10 | PERSIST键 从密钥中删除过期时间。 |
11 | PTTL键 获取密钥到期的剩余时间(以毫秒为单位)。 |
12 | TTL键 获取密钥到期的剩余时间。 |
13 | 随机key 从Redis返回一个随机密钥。 |
14 | 重命名新键 更改密钥名称。 |
15 | RENAMENX关键新钥匙 如果新密钥不存在,则重命名密钥。 |
16 | TYPE键 返回存储在键中的值的数据类型。 |
Redis - 字符串命令
Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的语法。
句法
<span style="color:#313131">redis 127.0.0.1:6379> COMMAND KEY_NAME
</span>
例
<span style="color:#313131">redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> GET tutorialspoint
"redis"
</span>
在上面的例子中,SET和GET是命令,而tutorialspoint是关键。
Redis字符串命令
下表列出了一些在Redis中管理字符串的基本命令。
Sr.No | 命令和描述 |
---|---|
1 | SET键值 此命令设置指定键的值。 |
2 | GET键 获取键的值。 |
3 | GETRANGE键开始结束 获取存储在键中的字符串的子字符串。 |
4 | GETSET键值 设置键的字符串值并返回其旧值。 |
五 | GETBIT键偏移量 返回存储在键中的字符串值的偏移量处的位值。 |
6 | MGET key1 [key2 ..] 获取所有给定键的值 |
7 | SETBIT键偏移值 设置或清除存储在键中的字符串值的偏移处的位 |
8 | SETEX键秒值 使用键的到期值设置值 |
9 | SETNX键值 仅当密钥不存在时,才设置密钥的值 |
10 | SETRANGE键偏移值 从指定偏移量开始的键处覆盖字符串的一部分 |
11 | STRLEN钥匙 获取存储在键中的值的长度 |
12 | MSET键值[键值...] 将多个键设置为多个值 |
13 | MSETNX键值[键值...] 仅当没有任何键存在时,才将多个键设置为多个值 |
14 | PSETEX键毫秒值 设置键的值和到期时间(以毫秒为单位) |
15 | INCR键 将键的整数值递增1 |
16 | INCRBY键增量 按给定量增加键的整数值 |
17 | INCRBYFLOAT键增量 按给定量增加键的浮点值 |
18 | DECR键 将键的整数值减1 |
19 | DECRBY键递减 按给定数字递减键的整数值 |
20 | APPEND键值 将值附加到键 |
Redis - 哈希
Redis Hashes是字符串字段和字符串值之间的映射。因此,它们是表示对象的完美数据类型。
在Redis中,每个哈希都可以存储多达40亿个字段值对。
例
<span style="color:#313131">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"
</span>
在上面的示例中,我们在名为“tutorialspoint”的哈希中设置了Redis教程详细信息(名称,描述,喜欢,访问者)。
Redis Hash命令
下表列出了一些与hash相关的基本命令。
Sr.No | 命令和描述 |
---|---|
1 | HDEL键字段2 [field2] 删除一个或多个哈希字段。 |
2 | HEXISTS关键字段 确定是否存在哈希字段。 |
3 | HGET关键字段 获取存储在指定键中的哈希字段的值。 |
4 | HGETALL键 获取存储在指定键的哈希中的所有字段和值 |
五 | HINCRBY键字段增量 使用给定数字增加散列字段的整数值 |
6 | HINCRBYFLOAT关键字段增量 按给定量增加散列字段的浮点值 |
7 | HKEYS关键 获取哈希中的所有字段 |
8 | HLEN键 获取哈希中的字段数 |
9 | HMGET键字段1 [field2] 获取所有给定哈希字段的值 |
10 | HMSET键field1 value1 [field2 value2] 将多个哈希字段设置为多个值 |
11 | HSET关键字段值 设置哈希字段的字符串值 |
12 | HSETNX关键字段值 仅当字段不存在时,设置哈希字段的值 |
13 | HVALS键 获取哈希中的所有值 |
14 | HSCAN键光标[MATCH模式] [COUNT计数] 增量迭代哈希字段和关联值 |
Redis - 列表
Redis列表只是字符串列表,按插入顺序排序。您可以在列表的头部或尾部的Redis列表中添加元素。
列表的最大长度为2 32 - 1个元素(4294967295,每个列表超过40亿个元素)。
例
<span style="color:#313131">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"
</span>
在上面的示例中,通过命令LPUSH在名为“tutorials”的Redis列表中插入了三个值。
Redis列出命令
下表列出了与列表相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | BLPOP key1 [key2]超时 删除并获取列表中的第一个元素,或阻塞直到一个元素可用 |
2 | BRPOP key1 [key2]超时 删除并获取列表中的最后一个元素,或阻塞直到一个元素可用 |
3 | BRPOPLPUSH源目标超时 从列表中弹出一个值,将其推送到另一个列表并返回它; 或阻止,直到有一个可用 |
4 | LINDEX密钥索引 通过索引从列表中获取元素 |
五 | LINSERT键BEFORE | AFTER枢轴值 在列表中的另一个元素之前或之后插入元素 |
6 | LLEN键 获取列表的长度 |
7 | LPOP密钥 删除并获取列表中的第一个元素 |
8 | LPUSH键值1 [value2] 将一个或多个值添加到列表中 |
9 | LPUSHX键值 仅当列表存在时,才将值添加到列表中 |
10 | LRANGE键开始停止 从列表中获取一系列元素 |
11 | LREM键计数值 从列表中删除元素 |
12 | LSET键索引值 按索引设置列表中元素的值 |
13 | LTRIM键开始停止 将列表修剪到指定范围 |
14 | RPOP键 删除并获取列表中的最后一个元素 |
15 | RPOPLPUSH源目的地 删除列表中的最后一个元素,将其附加到另一个列表并返回它 |
16 | RPUSH键值1 [value2] 将一个或多个值附加到列表中 |
17 | RPUSHX键值 仅在列表存在时才将值附加到列表 |
Redis - 集合
Redis集是唯一字符串的无序集合。唯一意味着集合不允许在密钥中复制数据。
在Redis中,添加,删除和测试O(1)中成员的存在(恒定时间,不管Set中包含的元素数量)。列表的最大长度为2 32 - 1个元素(4294967295,每组超过40亿个元素)。
例
<span style="color:#313131">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"
</span>
在上面的示例中,命令SADD在名为“tutorials”的Redis集中插入了三个值。
Redis设置命令
下表列出了与集相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | SADD密钥成员1 [member2] 将一个或多个成员添加到集合中 |
2 | SCARD键 获取集合中的成员数 |
3 | SDIFF key1 [key2] 减去多个集合 |
4 | SDIFFSTORE目标键1 [key2] 减去多个集合并将结果集存储在密钥中 |
五 | SINTER key1 [key2] 相交多组 |
6 | SINTERSTORE目的地key1 [key2] 相交多个集合并将结果集存储在密钥中 |
7 | SISMEMBER关键成员 确定给定值是否为集合的成员 |
8 | SMEMBERS的关键 获取集合中的所有成员 |
9 | SMOVE源目标成员 将成员从一个集移动到另一个集 |
10 | SPOP键 从集合中删除并返回随机成员 |
11 | SRANDMEMBER键[count] 从集合中获取一个或多个随机成员 |
12 | SREM密钥成员1 [member2] 从集合中删除一个或多个成员 |
13 | SUNION key1 [key2] 添加多个集 |
14 | SUNIONSTORE目的地key1 [key2] 添加多个集合并将结果集存储在密钥中 |
15 | SSCAN键光标[MATCH模式] [COUNT计数] 逐步迭代设置元素 |
Redis - 排序集
Redis排序集类似于Redis集,具有存储在集合中的值的唯一特征。不同之处在于,排序集的每个成员都与一个分数相关联,该分数用于从最小分数到最大分数获取有序排序集。
在Redis排序集中,添加,删除和测试O(1)中成员的存在(恒定时间,不管集合中包含的元素数量)。列表的最大长度为2 32 - 1个元素(4294967295,每组超过40亿个元素)。
例
<span style="color:#313131">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"
</span>
在上面的示例中,通过命令ZADD在Redis排序集中插入了三个值,其名称为“tutorials” 。
Redis排序集命令
下表列出了与排序集相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | ZADD关键得分1成员1 [得分2成员2] 将一个或多个成员添加到已排序的集合,或更新其分数(如果已存在) |
2 | ZCARD键 获取有序集合中的成员数 |
3 | ZCOUNT键最小值 计算具有给定值内分数的有序集合中的成员 |
4 | ZINCRBY键增量成员 增加已排序集中成员的分数 |
五 | ZINTERSTORE目的地numkeys键[key ...] 将多个有序集相交并将生成的有序集存储在新密钥中 |
6 | ZLEXCOUNT键最小值 计算给定词典范围之间的有序集合中的成员数 |
7 | ZRANGE键开始停止[WITHSCORES] 按索引返回有序集合中的成员范围 |
8 | ZRANGEBYLEX键最小最大值[LIMIT偏移计数] 按字典范围返回有序集合中的成员范围 |
9 | ZRANGEBYSCORE键最小值[WITHSCORES] [LIMIT] 按分数返回有序集合中的成员范围 |
10 | ZRANK关键成员 确定有序集中成员的索引 |
11 | ZREM关键成员[成员...] 从已排序的集中删除一个或多个成员 |
12 | ZREMRANGEBYLEX键最小值 删除给定词典范围之间的有序集合中的所有成员 |
13 | ZREMRANGEBYRANK键开始停止 删除给定索引中已排序集中的所有成员 |
14 | ZREMRANGEBYSCORE键最小值 删除给定分数内有序集中的所有成员 |
15 | ZREVRANGE键开始停止[WITHSCORES] 按索引返回有序集合中的成员范围,分数从高到低排序 |
16 | ZREVRANGEBYSCORE键最大值[WITHSCORES] 按分数返回排序集中的成员范围,分数从高到低排序 |
17 | ZREVRANK关键成员 确定有序集合中成员的索引,分数从高到低排序 |
18 | ZSCORE关键成员 获取与已排序集中的给定成员关联的分数 |
19 | ZUNIONSTORE目的地numkeys键[key ...] 添加多个有序集并将生成的有序集存储在新密钥中 |
20 | ZSCAN键光标[MATCH模式] [COUNT计数] 逐步迭代排序的集合元素和相关的分数 |
Redis - HyperLogLog
Redis HyperLogLog是一种使用随机化的算法,以便仅使用常量和少量内存来提供集合中唯一元素数量的近似值。
即使使用每个密钥大约12千字节的非常少量的内存,HyperLogLog也能很好地逼近集合的基数,标准误差为0.81%。除非您接近2 64个项目,否则您可以计算的项目数量没有限制。
例
以下示例说明了Redis HyperLogLog的工作原理。
<span style="color:#313131">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
</span>
Redis HyperLogLog命令
下表列出了与Redis HyperLogLog相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | PFADD关键元素[元素...] 将指定的元素添加到指定的HyperLogLog。 |
2 | PFCOUNT键[键...] 返回HyperLogLog在密钥处观察到的集合的近似基数。 |
3 | PFMERGE destkey sourcekey [sourcekey ...] 将N个不同的HyperLogLog合并为一个。 |
Redis - 发布订阅
Redis Pub / Sub实现了消息传递系统,其中发送者(在redis术语中称为发布者)在接收者(订阅者)接收消息时发送消息。传输消息的链接称为通道。
在Redis中,客户可以订阅任意数量的频道。
例
以下示例说明了发布订户概念的工作原理 在以下示例中,一个客户端订阅名为“redisChat”的通道。
<span style="color:#313131">redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
</span>
现在,两个客户端在名为“redisChat”的同一频道上发布消息,并且上面订阅的客户端正在接收消息。
<span style="color:#313131">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"
</span>
Redis PubSub命令
下表列出了与Redis Pub / Sub相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | PSUBSCRIBE模式[模式...] 订阅与给定模式匹配的频道。 |
2 | PUBSUB子命令[argument [argument ...]] 告诉Pub / Sub系统的状态。例如,哪些客户端在服务器上处于活动状态。 |
3 | 发布频道消息 将消息发布到频道。 |
4 | PUNSUBSCRIBE [pattern [pattern ...]] 停止侦听发布到与给定模式匹配的通道的消息。 |
五 | SUBSCRIBE频道[频道...] 侦听发布到给定频道的消息。 |
6 | 取消订阅[频道[频道...]] 停止侦听发布到给定频道的消息。 |
Redis - 事务
Redis事务允许在一个步骤中执行一组命令。以下是交易的两个属性。
-
事务中的所有命令都作为单个隔离操作顺序执行。在执行Redis事务的过程中,不可能提供由另一个客户端发出的请求。
-
Redis事务也是原子的。原子意味着要么处理所有命令,要么不处理任何命令。
例
Redis事务由命令MULTI启动,然后您需要传递应在事务中执行的命令列表,之后整个事务由EXEC命令执行。
<span style="color:#313131">redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
</span>
例
以下示例说明了如何启动和执行Redis事务。
<span style="color:#313131">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
</span>
Redis事务命令
下表显示了与Redis事务相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | 丢弃 丢弃MULTI之后发出的所有命令 |
2 | EXEC 执行MULTI之后发出的所有命令 |
3 | 多 标记事务块的开始 |
4 | 取消监视 忘记所有看过的按键 |
五 | 观看键[键...] 观察给定的键以确定MULTI / EXEC块的执行 |
Redis - 脚本
Redis脚本用于使用Lua解释器评估脚本。它从版本2.6.0开始内置于Redis中。用于编写脚本的命令是EVAL命令。
句法
以下是EVAL命令的基本语法。
<span style="color:#313131">redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
</span>
例
以下示例说明了Redis脚本的工作原理。
<span style="color:#313131">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"
</span>
Redis脚本命令
下表列出了与Redis Scripting相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | EVAL脚本numkeys键[key ...] arg [arg ...] 执行Lua脚本。 |
2 | EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行Lua脚本。 |
3 | SCRIPT EXISTS脚本[脚本...] 检查脚本缓存中是否存在脚本。 |
4 | 脚本冲洗 从脚本缓存中删除所有脚本。 |
五 | 脚本杀戮 杀死当前正在执行的脚本。 |
6 | SCRIPT LOAD脚本 将指定的Lua脚本加载到脚本缓存中。 |
Redis - 连接
Redis连接命令主要用于管理与Redis服务器的客户端连接。
例
以下示例说明客户端如何向Redis服务器验证自身并检查服务器是否正在运行。
<span style="color:#313131">redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
</span>
Redis连接命令
下表列出了与Redis连接相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | AUTH密码 使用给定密码对服务器进行身份验证 |
2 | ECHO消息 打印给定的字符串 |
3 | PING 检查服务器是否正在运行 |
4 | 放弃 关闭当前连接 |
五 | SELECT索引 更改当前连接的所选数据库 |
Redis - 服务器
Redis服务器命令主要用于管理Redis服务器。
例
以下示例说明了如何获取有关服务器的所有统计信息和信息。
<span style="color:#313131">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
</span>
Redis服务器命令
下表列出了与Redis服务器相关的一些基本命令。
Sr.No | 命令和描述 |
---|---|
1 | BGREWRITEAOF 异步重写仅附加文件 |
2 | BGSAVE 异步将数据集保存到磁盘 |
3 | 客户端KILL [ip:port] [ID client-id] 杀死客户端的连接 |
4 | 客户名单 获取服务器的客户端连接列表 |
五 | 客户端GETNAME 获取当前连接的名称 |
6 | 客户端暂停超时 停止从客户端处理指定时间的命令 |
7 | CLIENT SETNAME连接名称 设置当前连接名称 |
8 | CLUSTER SLOTS 获取Cluster slot to node mappings的数组 |
9 | 命令 获取Redis命令详细信息的数组 |
10 | COMMAND COUNT 获取Redis命令的总数 |
11 | COMMAND GETKEYS 给定完整的Redis命令,提取密钥 |
12 | BGSAVE 异步将数据集保存到磁盘 |
13 | COMMAND INFO命令名[命令名...] 获取特定Redis命令详细信息的数组 |
14 | CONFIG GET参数 获取配置参数的值 |
15 | CONFIG REWRITE 使用内存配置重写配置文件 |
16 | CONFIG SET参数值 将配置参数设置为给定值 |
17 | CONFIG RESETSTAT 重置INFO返回的统计信息 |
18 | DBSIZE 返回所选数据库中的键数 |
19 | DEBUG OBJECT键 获取有关键的调试信息 |
20 | DEBUG SEGFAULT 使服务器崩溃 |
21 | FLUSHALL 从所有数据库中删除所有密钥 |
22 | FLUSHDB 从当前数据库中删除所有键 |
23 | 信息[部分] 获取有关服务器的信息和统计信息 |
24 | LASTSAVE 获取上次成功保存到磁盘的UNIX时间戳 |
25 | 监控 侦听服务器实时收到的所有请求 |
26 | 角色 返回实例在复制上下文中的角色 |
27 | 保存 同步将数据集保存到磁盘 |
28 | 关闭[NOSAVE] [SAVE] 将数据集同步保存到磁盘,然后关闭服务器 |
29 | SLAVEOF主机端口 使服务器成为另一个实例的从属服务器,或将其作为主服务器提升 |
三十 | SLOWLOG子命令[参数] 管理Redis慢查询日志 |
31 | 同步 用于复制的命令 |
32 | 时间 返回当前服务器时间 |
Redis - 备份
Redis SAVE命令用于创建当前Redis数据库的备份。
句法
以下是redis SAVE命令的基本语法。
<span style="color:#313131">127.0.0.1:6379> SAVE
</span>
例
以下示例创建当前数据库的备份。
<span style="color:#313131">127.0.0.1:6379> SAVE
OK
</span>
此命令将在Redis目录中创建dump.rdb文件。
还原Redis数据
要还原Redis数据,请将Redis备份文件(dump.rdb)移动到Redis目录中并启动服务器。要获取Redis目录,请使用Redis的CONFIG命令,如下所示。
<span style="color:#313131">127.0.0.1:6379> CONFIG get dir
1) "dir"
2) "/user/tutorialspoint/redis-2.8.13/src"
</span>
在上面命令/user/tutorialspoint/redis-2.8.13/src的输出中是安装Redis服务器的目录。
Bgsave
要创建Redis备份,还可以使用备用命令BGSAVE。此命令将启动备份过程并在后台运行。
例
<span style="color:#313131">127.0.0.1:6379> BGSAVE
Background saving started
</span>
Redis - 安全
可以保护Redis数据库,使得任何进行连接的客户端都需要在执行命令之前进行身份验证。要保护Redis,您需要在配置文件中设置密码。
例
以下示例显示了保护Redis实例的步骤。
<span style="color:#313131">127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
</span>
默认情况下,此属性为空,这表示没有为此实例设置密码。您可以通过执行以下命令来更改此属性。
<span style="color:#313131">127.0.0.1:6379> CONFIG set requirepass "tutorialspoint"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "tutorialspoint"
</span>
设置密码后,如果任何客户端运行没有身份验证的命令,则(错误)NOAUTH身份验证需要。错误将返回。因此,客户端需要使用AUTH命令来验证自己。
句法
以下是AUTH命令的基本语法。
<span style="color:#313131">127.0.0.1:6379> AUTH password
</span>
例
<span style="color:#313131">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"
</span>
Redis - 基准
Redis基准测试是通过同时运行n个命令来检查Redis性能的实用程序。
句法
以下是Redis基准测试的基本语法。
<span style="color:#313131">redis-benchmark [option] [option value]
</span>
例
下面的示例通过调用100000命令来检查Redis。
<span style="color:#313131">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
</span>
以下是Redis基准测试中可用选项的列表。
Sr.No | 选项 | 描述 | 默认值 |
---|---|---|---|
1 | -H | 指定服务器主机名 | 127.0.0.1 |
2 | -p | 指定服务器端口 | 6379 |
3 | -s | 指定服务器套接字 | |
4 | -C | 指定并行连接的数量 | 50 |
五 | -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基准测试实用程序中的多个使用选项。
<span style="color:#313131">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
</span>
Redis - 客户端连接
如果启用,Redis将在配置的侦听TCP端口和Unix套接字上接受客户端的连接。接受新客户端连接时,将执行以下操作 -
-
由于Redis使用多路复用和非阻塞I / O,因此客户端套接字处于非阻塞状态。
-
设置TCP_NODELAY选项是为了确保我们的连接没有延迟。
-
创建可读文件事件,以便一旦可以在套接字上读取新数据,Redis就能够收集客户端查询。
最大客户数
在Redis config(redis.conf)中,有一个名为maxclients的属性,它描述了可以连接到Redis的最大客户端数。
以下是命令的基本语法。
<span style="color:#313131">config get maxclients
1) "maxclients"
2) "10000"
</span>
默认情况下,此属性设置为10000(取决于操作系统的最大文件描述符数限制),但您可以更改此属性。
例
在以下示例中,我们在启动服务器时将最大客户端数设置为100000。
<span style="color:#313131">redis-server --maxclients 100000
</span>
客户端命令
Sr.No | 命令 | 描述 |
---|---|---|
1 | 客户名单 | 返回连接到Redis服务器的客户端列表 |
2 | 客户端SETNAME | 为当前连接指定名称 |
3 | 客户端GETNAME | 返回CLIENT SETNAME设置的当前连接的名称 |
4 | 客户端暂停 | 这是一个连接控制命令,能够在指定的时间内(以毫秒为单位)挂起所有Redis客户端 |
五 | 客户杀人 | 此命令关闭给定的客户端连接。 |
Redis - 流水线
Redis是TCP服务器,支持请求/响应协议。在Redis中,请求通过以下步骤完成 -
-
客户端向服务器发送查询,并通常以阻塞方式从套接字读取服务器响应。
-
服务器处理该命令并将响应发送回客户端。
流水线的意义
流水线操作的基本含义是,客户端可以向服务器发送多个请求而无需等待回复,最后只需一步即可读取回复。
例
要检查Redis管道,只需启动Redis实例并在终端中键入以下命令。
<span style="color:#313131">$(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
</span>
在上面的示例中,我们将使用PING命令检查Redis连接。我们设置了一个名为tutorial的字符串,其值为redis。之后,我们获得该键值并将访问者数量增加三倍。在结果中,我们可以看到所有命令都提交给Redis一次,而Redis只需一步即可提供所有命令的输出。
流水线的好处
这种技术的好处是大大提高了协议性能。通过流水线技术获得的加速比范围从连接到本地主机的五倍到最慢一百倍的互联网连接。
Redis - 分区
分区是将数据拆分为多个Redis实例的过程,因此每个实例只包含密钥的子集。
分区的好处
-
它允许更大的数据库,使用许多计算机的内存总和。如果不进行分区,则限制为单台计算机可以支持的内存量。
-
它允许将计算能力扩展到多个核心和多台计算机,并将网络带宽扩展到多台计算机和网络适配器。
分区的缺点
-
通常不支持涉及多个键的操作。例如,如果两个集合存储在映射到不同Redis实例的键中,则无法执行它们之间的交集。
-
无法使用涉及多个密钥的Redis事务。
-
分区granuliary是关键,因此不可能使用像一个非常大的有序集的单个大键来对数据集进行分片。
-
使用分区时,数据处理更复杂。例如,您必须处理多个RDB / AOF文件,并且要获取数据备份,您需要从多个实例和主机聚合持久性文件。
-
添加和删除容量可能很复杂。例如,Redis Cluster支持大多数透明的数据重新平衡,并能够在运行时添加和删除节点。但是,客户端分区和代理等其他系统不支持此功能。一种称为Presharding的技术在这方面有所帮助。
分区类型
Redis中有两种类型的分区。假设我们有四个Redis实例,R0,R1,R2,R3和许多代表用户的密钥: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服务器
<span style="color:#313131"><span style="color:#000088">import</span> redis<span style="color:#666600">.</span>clients<span style="color:#666600">.</span>jedis<span style="color:#666600">.</span><span style="color:#7f0055">Jedis</span><span style="color:#666600">;</span>
<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#7f0055">RedisJava</span> <span style="color:#666600">{</span>
<span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> main<span style="color:#666600">(</span><span style="color:#7f0055">String</span><span style="color:#666600">[]</span> args<span style="color:#666600">)</span> <span style="color:#666600">{</span>
<span style="color:#880000">//Connecting to Redis server on localhost </span>
<span style="color:#7f0055">Jedis</span> jedis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Jedis</span><span style="color:#666600">(</span><span style="color:#008800">"localhost"</span><span style="color:#666600">);</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">);</span>
<span style="color:#880000">//check whether server is running or not </span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Server is running: "</span><span style="color:#666600">+</span>jedis<span style="color:#666600">.</span>ping<span style="color:#666600">());</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span> </span>
现在,让我们编译并运行上面的程序来测试与Redis服务器的连接。您可以根据自己的要求更改路径。我们假设当前版本的jedis.jar在当前路径中可用。
<span style="color:#313131">$javac RedisJava.java
$java RedisJava
Connection to server sucessfully
Server is running: PONG
</span>
Redis Java String示例
<span style="color:#313131"><span style="color:#000088">import</span> redis<span style="color:#666600">.</span>clients<span style="color:#666600">.</span>jedis<span style="color:#666600">.</span><span style="color:#7f0055">Jedis</span><span style="color:#666600">;</span>
<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#7f0055">RedisStringJava</span> <span style="color:#666600">{</span>
<span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> main<span style="color:#666600">(</span><span style="color:#7f0055">String</span><span style="color:#666600">[]</span> args<span style="color:#666600">)</span> <span style="color:#666600">{</span>
<span style="color:#880000">//Connecting to Redis server on localhost </span>
<span style="color:#7f0055">Jedis</span> jedis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Jedis</span><span style="color:#666600">(</span><span style="color:#008800">"localhost"</span><span style="color:#666600">);</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">);</span>
<span style="color:#880000">//set the data in redis string </span>
jedis<span style="color:#666600">.</span><span style="color:#000088">set</span><span style="color:#666600">(</span><span style="color:#008800">"tutorial-name"</span><span style="color:#666600">,</span> <span style="color:#008800">"Redis tutorial"</span><span style="color:#666600">);</span>
<span style="color:#880000">// Get the stored data and print it </span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Stored string in redis:: "</span><span style="color:#666600">+</span> jedis<span style="color:#666600">.</span><span style="color:#000088">get</span><span style="color:#666600">(</span><span style="color:#008800">"tutorialname"</span><span style="color:#666600">));</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span></span>
现在,让我们编译并运行上面的程序。
<span style="color:#313131">$javac RedisStringJava.java
$java RedisStringJava
Connection to server sucessfully
Stored string in redis:: Redis tutorial
</span>
Redis Java列表示例
<span style="color:#313131"><span style="color:#000088">import</span> redis<span style="color:#666600">.</span>clients<span style="color:#666600">.</span>jedis<span style="color:#666600">.</span><span style="color:#7f0055">Jedis</span><span style="color:#666600">;</span>
<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#7f0055">RedisListJava</span> <span style="color:#666600">{</span>
<span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> main<span style="color:#666600">(</span><span style="color:#7f0055">String</span><span style="color:#666600">[]</span> args<span style="color:#666600">)</span> <span style="color:#666600">{</span>
<span style="color:#880000">//Connecting to Redis server on localhost </span>
<span style="color:#7f0055">Jedis</span> jedis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Jedis</span><span style="color:#666600">(</span><span style="color:#008800">"localhost"</span><span style="color:#666600">);</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">);</span>
<span style="color:#880000">//store data in redis list </span>
jedis<span style="color:#666600">.</span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Redis"</span><span style="color:#666600">);</span>
jedis<span style="color:#666600">.</span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Mongodb"</span><span style="color:#666600">);</span>
jedis<span style="color:#666600">.</span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Mysql"</span><span style="color:#666600">);</span>
<span style="color:#880000">// Get the stored data and print it </span>
<span style="color:#7f0055">List</span><span style="color:#666600"><</span><span style="color:#7f0055">String</span><span style="color:#666600">></span> list <span style="color:#666600">=</span> jedis<span style="color:#666600">.</span>lrange<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#006666">0</span> <span style="color:#666600">,</span><span style="color:#006666">5</span><span style="color:#666600">);</span>
<span style="color:#000088">for</span><span style="color:#666600">(</span><span style="color:#000088">int</span> i <span style="color:#666600">=</span> <span style="color:#006666">0</span><span style="color:#666600">;</span> i<span style="color:#666600"><</span>list<span style="color:#666600">.</span>size<span style="color:#666600">();</span> i<span style="color:#666600">++)</span> <span style="color:#666600">{</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Stored string in redis:: "</span><span style="color:#666600">+</span>list<span style="color:#666600">.</span><span style="color:#000088">get</span><span style="color:#666600">(</span>i<span style="color:#666600">));</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span> </span>
现在,让我们编译并运行上面的程序。
<span style="color:#313131">$javac RedisListJava.java
$java RedisListJava
Connection to server sucessfully
Stored string in redis:: Redis
Stored string in redis:: Mongodb
Stored string in redis:: Mysql
</span>
Redis Java Keys示例
<span style="color:#313131"><span style="color:#000088">import</span> redis<span style="color:#666600">.</span>clients<span style="color:#666600">.</span>jedis<span style="color:#666600">.</span><span style="color:#7f0055">Jedis</span><span style="color:#666600">;</span>
<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#7f0055">RedisKeyJava</span> <span style="color:#666600">{</span>
<span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> main<span style="color:#666600">(</span><span style="color:#7f0055">String</span><span style="color:#666600">[]</span> args<span style="color:#666600">)</span> <span style="color:#666600">{</span>
<span style="color:#880000">//Connecting to Redis server on localhost </span>
<span style="color:#7f0055">Jedis</span> jedis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Jedis</span><span style="color:#666600">(</span><span style="color:#008800">"localhost"</span><span style="color:#666600">);</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">);</span>
<span style="color:#880000">//store data in redis list </span>
<span style="color:#880000">// Get the stored data and print it </span>
<span style="color:#7f0055">List</span><span style="color:#666600"><</span><span style="color:#7f0055">String</span><span style="color:#666600">></span> list <span style="color:#666600">=</span> jedis<span style="color:#666600">.</span>keys<span style="color:#666600">(</span><span style="color:#008800">"*"</span><span style="color:#666600">);</span>
<span style="color:#000088">for</span><span style="color:#666600">(</span><span style="color:#000088">int</span> i <span style="color:#666600">=</span> <span style="color:#006666">0</span><span style="color:#666600">;</span> i<span style="color:#666600"><</span>list<span style="color:#666600">.</span>size<span style="color:#666600">();</span> i<span style="color:#666600">++)</span> <span style="color:#666600">{</span>
<span style="color:#7f0055">System</span><span style="color:#666600">.</span><span style="color:#000088">out</span><span style="color:#666600">.</span>println<span style="color:#666600">(</span><span style="color:#008800">"List of stored keys:: "</span><span style="color:#666600">+</span>list<span style="color:#666600">.</span><span style="color:#000088">get</span><span style="color:#666600">(</span>i<span style="color:#666600">));</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span>
<span style="color:#666600">}</span></span>
现在,让我们编译并运行上面的程序。
<span style="color:#313131">$javac RedisKeyJava.java
$java RedisKeyJava
Connection to server sucessfully
List of stored keys:: tutorial-name
List of stored keys:: tutorial-list
</span>
Redis - PHP
在PHP程序中开始使用Redis之前,需要确保在机器上安装了Redis PHP驱动程序和PHP。您可以在计算机上查看PHP安装PHP教程。
安装
现在,让我们检查一下如何设置Redis PHP驱动程序。
您需要从github存储库https://github.com/nicolasff/phpredis下载phpredis 。下载后,将文件解压缩到phpredis目录。在Ubuntu上,安装以下扩展名。
<span style="color:#313131">cd phpredis
sudo phpize
sudo ./configure
sudo make
sudo make install
</span>
现在,将“modules”文件夹的内容复制并粘贴到PHP扩展目录,并在php.ini中添加以下行。
<span style="color:#313131">extension = redis.so
</span>
现在,您的Redis PHP安装已完成
连接到Redis服务器
<span style="color:#313131"><span style="color:#666600"><?</span>php
<span style="color:#880000">//Connecting to Redis server on localhost </span>
$redis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Redis</span><span style="color:#666600">();</span>
$redis<span style="color:#666600">-></span>connect<span style="color:#666600">(</span><span style="color:#008800">'127.0.0.1'</span><span style="color:#666600">,</span> <span style="color:#006666">6379</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">;</span>
<span style="color:#880000">//check whether server is running or not </span>
echo <span style="color:#008800">"Server is running: "</span><span style="color:#666600">.</span>$redis<span style="color:#666600">-></span>ping<span style="color:#666600">();</span>
<span style="color:#666600">?></span></span>
程序执行时,会产生以下结果。
<span style="color:#313131">Connection to server sucessfully
Server is running: PONG
</span>
Redis PHP字符串示例
<span style="color:#313131"><span style="color:#666600"><?</span>php
<span style="color:#880000">//Connecting to Redis server on localhost </span>
$redis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Redis</span><span style="color:#666600">();</span>
$redis<span style="color:#666600">-></span>connect<span style="color:#666600">(</span><span style="color:#008800">'127.0.0.1'</span><span style="color:#666600">,</span> <span style="color:#006666">6379</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">;</span>
<span style="color:#880000">//set the data in redis string </span>
$redis<span style="color:#666600">-></span><span style="color:#000088">set</span><span style="color:#666600">(</span><span style="color:#008800">"tutorial-name"</span><span style="color:#666600">,</span> <span style="color:#008800">"Redis tutorial"</span><span style="color:#666600">);</span>
<span style="color:#880000">// Get the stored data and print it </span>
echo <span style="color:#008800">"Stored string in redis:: "</span> <span style="color:#666600">.</span>$redis<span style="color:#666600">→</span><span style="color:#000088">get</span><span style="color:#666600">(</span><span style="color:#008800">"tutorial-name"</span><span style="color:#666600">);</span>
<span style="color:#666600">?></span></span>
执行上述程序时,将产生以下结果。
<span style="color:#313131">Connection to server sucessfully
Stored string in redis:: Redis tutorial
</span>
Redis php列表示例
<span style="color:#313131"><span style="color:#666600"><?</span>php
<span style="color:#880000">//Connecting to Redis server on localhost </span>
$redis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Redis</span><span style="color:#666600">();</span>
$redis<span style="color:#666600">-></span>connect<span style="color:#666600">(</span><span style="color:#008800">'127.0.0.1'</span><span style="color:#666600">,</span> <span style="color:#006666">6379</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">;</span>
<span style="color:#880000">//store data in redis list </span>
$redis<span style="color:#666600">-></span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Redis"</span><span style="color:#666600">);</span>
$redis<span style="color:#666600">-></span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Mongodb"</span><span style="color:#666600">);</span>
$redis<span style="color:#666600">-></span>lpush<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#008800">"Mysql"</span><span style="color:#666600">);</span>
<span style="color:#880000">// Get the stored data and print it </span>
$arList <span style="color:#666600">=</span> $redis<span style="color:#666600">-></span>lrange<span style="color:#666600">(</span><span style="color:#008800">"tutorial-list"</span><span style="color:#666600">,</span> <span style="color:#006666">0</span> <span style="color:#666600">,</span><span style="color:#006666">5</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Stored string in redis:: "</span><span style="color:#666600">;</span>
print_r<span style="color:#666600">(</span>$arList<span style="color:#666600">);</span>
<span style="color:#666600">?></span></span>
执行上述程序时,将产生以下结果。
<span style="color:#313131">Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
</span>
Redis PHP密钥示例
<span style="color:#313131"><span style="color:#666600"><?</span>php
<span style="color:#880000">//Connecting to Redis server on localhost </span>
$redis <span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#7f0055">Redis</span><span style="color:#666600">();</span>
$redis<span style="color:#666600">-></span>connect<span style="color:#666600">(</span><span style="color:#008800">'127.0.0.1'</span><span style="color:#666600">,</span> <span style="color:#006666">6379</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Connection to server sucessfully"</span><span style="color:#666600">;</span>
<span style="color:#880000">// Get the stored keys and print it </span>
$arList <span style="color:#666600">=</span> $redis<span style="color:#666600">-></span>keys<span style="color:#666600">(</span><span style="color:#008800">"*"</span><span style="color:#666600">);</span>
echo <span style="color:#008800">"Stored keys in redis:: "</span>
print_r<span style="color:#666600">(</span>$arList<span style="color:#666600">);</span>
<span style="color:#666600">?></span></span>
程序执行时,会产生以下结果。
<span style="color:#313131">Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list
</span>
Redis - 有用的资源
以下资源包含有关Redis的其他信息。请使用它们来获得有关此主题的更多深入知识。
Redis上的有用链接
-
Redis文档 - Redis的官方网站,提供最新的文档和更新。
-
Redis下载 - 官方网站下载Redis的最新版本。
-
关于Redis的维基页面 - 关于Redis的简短教程。
Redis上有用的书籍