Redis快速指南

 

Redis教程

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>

在上面的示例中,SETGET是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命令和描述
1DEL键

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

2DUMP键

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

3EXISTS键

此命令检查密钥是否存在。

4EXPIRE键

设置指定时间后密钥的到期时间。

EXPIREAT键时间戳

设置指定时间后密钥的到期时间。这里的时间是Unix时间戳格式。

6PEXPIRE键毫秒

设置密钥的到期时间(以毫秒为单位)。

7PEXPIREAT键毫秒时间戳

设置Unix时间戳中密钥的到期时间,以毫秒为单位。

8KEYS模式

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

9移动密钥数据库

将密钥移动到另一个数据库。

10PERSIST键

从密钥中删除过期时间。

11PTTL键

获取密钥到期的剩余时间(以毫秒为单位)。

12TTL键

获取密钥到期的剩余时间。

13随机key

从Redis返回一个随机密钥。

14重命名新键

更改密钥名称。

15RENAMENX关键新钥匙

如果新密钥不存在,则重命名密钥。

16TYPE键

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

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>

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

Redis字符串命令

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

Sr.No命令和描述
1SET键值

此命令设置指定键的值。

2GET键

获取键的值。

3GETRANGE键开始结束

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

4GETSET键值

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

GETBIT键偏移量

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

6MGET key1 [key2 ..]

获取所有给定键的值

7SETBIT键偏移值

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

8SETEX键秒值

使用键的到期值设置值

9SETNX键值

仅当密钥不存在时,才设置密钥的值

10SETRANGE键偏移值

从指定偏移量开始的键处覆盖字符串的一部分

11STRLEN钥匙

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

12MSET键值[键值...]

将多个键设置为多个值

13MSETNX键值[键值...]

仅当没有任何键存在时,才将多个键设置为多个值

14PSETEX键毫秒值

设置键的值和到期时间(以毫秒为单位)

15INCR键

将键的整数值递增1

16INCRBY键增量

按给定量增加键的整数值

17INCRBYFLOAT键增量

按给定量增加键的浮点值

18DECR键

将键的整数值减1

19DECRBY键递减

按给定数字递减键的整数值

20APPEND键值

将值附加到键

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命令和描述
1HDEL键字段2 [field2]

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

2HEXISTS关键字段

确定是否存在哈希字段。

3HGET关键字段

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

4HGETALL键

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

HINCRBY键字段增量

使用给定数字增加散列字段的整数值

6HINCRBYFLOAT关键字段增量

按给定量增加散列字段的浮点值

7HKEYS关键

获取哈希中的所有字段

8HLEN键

获取哈希中的字段数

9HMGET键字段1 [field2]

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

10HMSET键field1 value1 [field2 value2]

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

11HSET关键字段值

设置哈希字段的字符串值

12HSETNX关键字段值

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

13HVALS键

获取哈希中的所有值

14HSCAN键光标[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命令和描述
1BLPOP key1 [key2]超时

删除并获取列表中的第一个元素,或阻塞直到一个元素可用

2BRPOP key1 [key2]超时

删除并获取列表中的最后一个元素,或阻塞直到一个元素可用

3BRPOPLPUSH源目标超时

从列表中弹出一个值,将其推送到另一个列表并返回它; 或阻止,直到有一个可用

4LINDEX密钥索引

通过索引从列表中获取元素

LINSERT键BEFORE | AFTER枢轴值

在列表中的另一个元素之前或之后插入元素

6LLEN键

获取列表的长度

7LPOP密钥

删除并获取列表中的第一个元素

8LPUSH键值1 [value2]

将一个或多个值添加到列表中

9LPUSHX键值

仅当列表存在时,才将值添加到列表中

10LRANGE键开始停止

从列表中获取一系列元素

11LREM键计数值

从列表中删除元素

12LSET键索引值

按索引设置列表中元素的值

13LTRIM键开始停止

将列表修剪到指定范围

14RPOP键

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

15RPOPLPUSH源目的地

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

16RPUSH键值1 [value2]

将一个或多个值附加到列表中

17RPUSHX键值

仅在列表存在时才将值附加到列表

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命令和描述
1SADD密钥成员1 [member2]

将一个或多个成员添加到集合中

2SCARD键

获取集合中的成员数

3SDIFF key1 [key2]

减去多个集合

4SDIFFSTORE目标键1 [key2]

减去多个集合并将结果集存储在密钥中

SINTER key1 [key2]

相交多组

6SINTERSTORE目的地key1 [key2]

相交多个集合并将结果集存储在密钥中

7SISMEMBER关键成员

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

8SMEMBERS的关键

获取集合中的所有成员

9SMOVE源目标成员

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

10SPOP键

从集合中删除并返回随机成员

11SRANDMEMBER键[count]

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

12SREM密钥成员1 [member2]

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

13SUNION key1 [key2]

添加多个集

14SUNIONSTORE目的地key1 [key2]

添加多个集合并将结果集存储在密钥中

15SSCAN键光标[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命令和描述
1ZADD关键得分1成员1 [得分2成员2]

将一个或多个成员添加到已排序的集合,或更新其分数(如果已存在)

2ZCARD键

获取有序集合中的成员数

3ZCOUNT键最小值

计算具有给定值内分数的有序集合中的成员

4ZINCRBY键增量成员

增加已排序集中成员的分数

ZINTERSTORE目的地numkeys键[key ...]

将多个有序集相交并将生成的有序集存储在新密钥中

6ZLEXCOUNT键最小值

计算给定词典范围之间的有序集合中的成员数

7ZRANGE键开始停止[WITHSCORES]

按索引返回有序集合中的成员范围

8ZRANGEBYLEX键最小最大值[LIMIT偏移计数]

按字典范围返回有序集合中的成员范围

9ZRANGEBYSCORE键最小值[WITHSCORES] [LIMIT]

按分数返回有序集合中的成员范围

10ZRANK关键成员

确定有序集中成员的索引

11ZREM关键成员[成员...]

从已排序的集中删除一个或多个成员

12ZREMRANGEBYLEX键最小值

删除给定词典范围之间的有序集合中的所有成员

13ZREMRANGEBYRANK键开始停止

删除给定索引中已排序集中的所有成员

14ZREMRANGEBYSCORE键最小值

删除给定分数内有序集中的所有成员

15ZREVRANGE键开始停止[WITHSCORES]

按索引返回有序集合中的成员范围,分数从高到低排序

16ZREVRANGEBYSCORE键最大值[WITHSCORES]

按分数返回排序集中的成员范围,分数从高到低排序

17ZREVRANK关键成员

确定有序集合中成员的索引,分数从高到低排序

18ZSCORE关键成员

获取与已排序集中的给定成员关联的分数

19ZUNIONSTORE目的地numkeys键[key ...]

添加多个有序集并将生成的有序集存储在新密钥中

20ZSCAN键光标[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命令和描述
1PFADD关键元素[元素...]

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

2PFCOUNT键[键...]

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

3PFMERGE 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命令和描述
1PSUBSCRIBE模式[模式...]

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

2PUBSUB子命令[argument [argument ...]]

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

3发布频道消息

将消息发布到频道。

4PUNSUBSCRIBE [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之后发出的所有命令

2EXEC

执行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命令和描述
1EVAL脚本numkeys键[key ...] arg [arg ...]

执行Lua脚本。

2EVALSHA sha1 numkeys key [key ...] arg [arg ...]

执行Lua脚本。

3SCRIPT EXISTS脚本[脚本...]

检查脚本缓存中是否存在脚本。

4脚本冲洗

从脚本缓存中删除所有脚本。

脚本杀戮

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

6SCRIPT 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命令和描述
1AUTH密码

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

2ECHO消息

打印给定的字符串

3PING

检查服务器是否正在运行

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命令和描述
1BGREWRITEAOF

异步重写仅附加文件

2BGSAVE

异步将数据集保存到磁盘

3客户端KILL [ip:port] [ID client-id]

杀死客户端的连接

4客户名单

获取服务器的客户端连接列表

客户端GETNAME

获取当前连接的名称

6客户端暂停超时

停止从客户端处理指定时间的命令

7CLIENT SETNAME连接名称

设置当前连接名称

8CLUSTER SLOTS

获取Cluster slot to node mappings的数组

9命令

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

10COMMAND COUNT

获取Redis命令的总数

11COMMAND GETKEYS

给定完整的Redis命令,提取密钥

12BGSAVE

异步将数据集保存到磁盘

13COMMAND INFO命令名[命令名...]

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

14CONFIG GET参数

获取配置参数的值

15CONFIG REWRITE

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

16CONFIG SET参数值

将配置参数设置为给定值

17CONFIG RESETSTAT

重置INFO返回的统计信息

18DBSIZE

返回所选数据库中的键数

19DEBUG OBJECT键

获取有关键的调试信息

20DEBUG SEGFAULT

使服务器崩溃

21FLUSHALL

从所有数据库中删除所有密钥

22FLUSHDB

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

23信息[部分]

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

24LASTSAVE

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

25监控

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

26角色

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

27保存

同步将数据集保存到磁盘

28关闭[NOSAVE] [SAVE]

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

29SLAVEOF主机端口

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

三十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-k1 =保持活力,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 Cookbook

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值