免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Redis快速入門(mén)


Redis的優(yōu)點(diǎn)

以下是Redis的一些優(yōu)點(diǎn)。

  • 異???/strong> - Redis非???,每秒可執(zhí)行大約110000次的設(shè)置(SET)操作,每秒大約可執(zhí)行81000次的讀取/獲取(GET)操作。
  • 支持豐富的數(shù)據(jù)類(lèi)型 - Redis支持開(kāi)發(fā)人員常用的大多數(shù)數(shù)據(jù)類(lèi)型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來(lái)解決各種問(wèn)題,因?yàn)槲覀冎滥男﹩?wèn)題可以更好使用地哪些數(shù)據(jù)類(lèi)型來(lái)處理解決。
  • 操作具有原子性 - 所有Redis操作都是原子操作,這確保如果兩個(gè)客戶端并發(fā)訪問(wèn),Redis服務(wù)器能接收更新的值。
  • 多實(shí)用工具 - Redis是一個(gè)多實(shí)用工具,可用于多種用例,如:緩存,消息隊(duì)列(Redis本地支持發(fā)布/訂閱),應(yīng)用程序中的任何短期數(shù)據(jù),例如,web應(yīng)用程序中的會(huì)話,網(wǎng)頁(yè)命中計(jì)數(shù)等。

Redis與其他鍵值存儲(chǔ)系統(tǒng)

  • Redis是鍵值數(shù)據(jù)庫(kù)系統(tǒng)的不同進(jìn)化路線,它的值可以包含更復(fù)雜的數(shù)據(jù)類(lèi)型,可在這些數(shù)據(jù)類(lèi)型上定義原子操作。

  • Redis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù),但在磁盤(pán)數(shù)據(jù)庫(kù)上是持久的,因此它代表了一個(gè)不同的權(quán)衡,在這種情況下,在不能大于存儲(chǔ)器(內(nèi)存)的數(shù)據(jù)集的限制下實(shí)現(xiàn)非常高的寫(xiě)和讀速度。

  • 內(nèi)存數(shù)據(jù)庫(kù)的另一個(gè)優(yōu)點(diǎn)是,它與磁盤(pán)上的相同數(shù)據(jù)結(jié)構(gòu)相比,復(fù)雜數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中存儲(chǔ)表示更容易操作。 因此,Redis可以做很少的內(nèi)部復(fù)雜性。

1. Redis環(huán)境安裝配置

在本章中,您將了解和學(xué)習(xí)Redis的環(huán)境安裝設(shè)置。

在Ubuntu上安裝Redis

要在Ubuntu上安裝Redis,打開(kāi)終端并鍵入以下命令 -

[yiibai@ubuntu:~]$ sudo apt-get update [yiibai@ubuntu:~]$ sudo apt-get install redis-server
Shell

這將在Ubuntu機(jī)器上安裝Redis。

啟動(dòng)Redis

[yiibai@ubuntu:~]$ redis-server[2988] 07 Feb 17:09:42.485 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf[2988] 07 Feb 17:09:42.488 # Unable to set the max number of files limit to 10032 (Operation not permitted), setting the max clients configuration to 3984.[2988] 07 Feb 17:09:42.490 # Warning: 32 bit instance detected but no memory lim _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 2.8.4 (00000000/0) 32 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in stand alone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 2988 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-'[2988] 07 Feb 17:09:42.581 # Server started, Redis version 2.8.4[2988] 07 Feb 17:09:42.582 # WARNING overcommit_memory is set to 0! Background s ' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_m[2988] 07 Feb 17:09:42.582 * The server is now ready to accept connections on po
Shell

檢查Redis是否正在工作

[yiibai@ubuntu:~]$ redis-cli
Shell

這將打開(kāi)一個(gè)redis提示,如下所示 -

redis 127.0.0.1:6379>
Shell

在上面的提示中,127.0.0.1是計(jì)算機(jī)的IP地址,6379是運(yùn)行Redis服務(wù)器的端口。 現(xiàn)在鍵入以下PING命令。

redis 127.0.0.1:6379> ping PONG
Shell

這表明Redis已成功在您的計(jì)算機(jī)上安裝了。

在Ubuntu上安裝Redis桌面管理

要在Ubuntu上安裝Redis桌面管理器,可從 http://redisdesktop.com/download 下載該軟件包,安裝即可。

打開(kāi)下載的軟件包并安裝。

Redis桌面管理器將提供用于管理Redis的鍵和數(shù)據(jù)的UI。

2. Redis配置

在Redis中,在Redis的根目錄下有一個(gè)配置文件(redis.conf)。當(dāng)然您可以通過(guò)Redis CONFIG命令獲取和設(shè)置所有的Redis配置。

語(yǔ)法
以下是Redis中的CONFIG命令的基本語(yǔ)法。

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
Shell

示例

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

要獲取所有配置設(shè)置,請(qǐng)使用*代替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) '/var/log/redis/redis-server.log' 11) 'pidfile' 12) '/var/run/redis/redis-server.pid' 13) 'maxmemory' 14) '3221225472' 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) 'lua-time-limit' 40) '5000' 41) 'slowlog-log-slower-than' 42) '10000' 43) 'slowlog-max-len' 44) '128' 45) 'port' 46) '6379' 47) 'databases' 48) '16' 49) 'repl-ping-slave-period' 50) '10' 51) 'repl-timeout' 52) '60' 53) 'repl-backlog-size' 54) '1048576' 55) 'repl-backlog-ttl' 56) '3600' 57) 'maxclients' 58) '3984' 59) 'watchdog-period' 60) '0' 61) 'slave-priority' 62) '100' 63) 'min-slaves-to-write' 64) '0' 65) 'min-slaves-max-lag' 66) '10' 67) 'hz' 68) '10' 69) 'no-appendfsync-on-rewrite' 70) 'no' 71) 'slave-serve-stale-data' 72) 'yes' 73) 'slave-read-only' 74) 'yes' 75) 'stop-writes-on-bgsave-error' 76) 'yes' 77) 'daemonize' 78) 'yes' 79) 'rdbcompression' 80) 'yes' 81) 'rdbchecksum' 82) 'yes' 83) 'activerehashing' 84) 'yes' 85) 'repl-disable-tcp-nodelay' 86) 'no' 87) 'aof-rewrite-incremental-fsync' 88) 'yes' 89) 'appendonly' 90) 'no' 91) 'dir' 92) '/var/lib/redis' 93) 'maxmemory-policy' 94) 'noeviction' 95) 'appendfsync' 96) 'everysec' 97) 'save' 98) '900 1 300 10 60 10000' 99) 'loglevel'100) 'notice'101) 'client-output-buffer-limit'102) 'normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60'103) 'unixsocketperm'104) '0'105) 'slaveof'106) ''107) 'notify-keyspace-events'108) ''109) 'bind'110) '127.0.0.1'
Shell

編輯配置

要更新配置,可以直接編輯redis.conf文件,也可以通過(guò)CONFIG set命令更新配置。

語(yǔ)法
以下是CONFIG SET命令的基本語(yǔ)法。

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
Shell

示例

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

3. Redis數(shù)據(jù)類(lèi)型

Redis支持5種數(shù)據(jù)類(lèi)型。

字符串

Redis中的字符串是一個(gè)字節(jié)序列。Redis中的字符串是二進(jìn)制安全的,這意味著它們的長(zhǎng)度不由任何特殊的終止字符決定。因此,可以在一個(gè)字符串中存儲(chǔ)高達(dá)512兆字節(jié)的任何內(nèi)容。

示例

redis 127.0.0.1:6379> set name 'yiibai.com' OK redis 127.0.0.1:6379> get name 'yiibai.com'
Shell

在上面的示例中,setget是Redis命令,name是Redis中使用的鍵,yiibai.com是存儲(chǔ)在Redis中的字符串的值。

注 - Redis命令不區(qū)分大小寫(xiě),如SET,Setset都是同一個(gè)命令。字符串值的最大長(zhǎng)度為 512MB。

散列/哈希

Redis散列/哈希(Hashes)是鍵值對(duì)的集合。Redis散列/哈希是字符串字段和字符串值之間的映射。因此,它們用于表示對(duì)象。

示例

redis 127.0.0.1:6379> HMSET ukey username 'yiibai' password 'passswd123' points 200
Shell

在上述示例中,散列/哈希數(shù)據(jù)類(lèi)型用于存儲(chǔ)包含用戶的基本信息的用戶對(duì)象。這里HMSETHGETALL是Redis的命令,而ukey是鍵的名稱(chēng)。

每個(gè)散列/哈希可以存儲(chǔ)多達(dá)2^32 - 1個(gè)健-值對(duì)(超過(guò)40億個(gè))。

列表

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

示例

redis 127.0.0.1:6379> lpush alist redis (integer) 1 redis 127.0.0.1:6379> lpush alist mongodb (integer) 2 redis 127.0.0.1:6379> lpush alist sqlite (integer) 3 redis 127.0.0.1:6379> lrange alist 0 10 1) 'sqlite' 2) 'mongodb' 3) 'redis'
Shell

列表的最大長(zhǎng)度為2^32 - 1個(gè)元素(4294967295,每個(gè)列表可容納超過(guò)40億個(gè)元素)。

集合

Redis集合是字符串的無(wú)序集合。在Redis中,您可以添加,刪除和測(cè)試成員存在的時(shí)間O(1)復(fù)雜性。

示例

redis 127.0.0.1:6379> sadd yiibailist redis (integer) 1 redis 127.0.0.1:6379> sadd yiibailist mongodb (integer) 1 redis 127.0.0.1:6379> sadd yiibailist sqlite (integer) 1 redis 127.0.0.1:6379> sadd yiibailist sqlite (integer) 0 redis 127.0.0.1:6379> smembers yiibailist 1) 'sqlite' 2) 'mongodb' 3) 'redis'
Shell

注意 - 在上面的示例中,sqlite被添加了兩次,但是由于集合的唯一屬性,所以它只算添加一次。

一個(gè)集合中的最大成員數(shù)量為2^32 - 1(即4294967295,每個(gè)集合中元素?cái)?shù)量可達(dá)40億個(gè))個(gè)。

可排序集合

Redis可排序集合類(lèi)似于Redis集合,是不重復(fù)的字符集合。 不同之處在于,排序集合的每個(gè)成員都與分?jǐn)?shù)相關(guān)聯(lián),這個(gè)分?jǐn)?shù)用于按最小分?jǐn)?shù)到最大分?jǐn)?shù)來(lái)排序的排序集合。雖然成員是唯一的,但分?jǐn)?shù)值可以重復(fù)。

示例

redis 127.0.0.1:6379> zadd yiibaiset 0 redis(integer) 1 redis 127.0.0.1:6379> zadd yiibaiset 0 mongodb(integer) 1 redis 127.0.0.1:6379> zadd yiibaiset 1 sqlite(integer) 1 redis 127.0.0.1:6379> zadd yiibaiset 1 sqlite(integer) 0 redis 127.0.0.1:6379> ZRANGEBYSCORE yiibaiset 0 1000 1) 'mongodb' 2) 'redis' 3) 'sqlite'
Shell

因?yàn)?‘sqlite‘ 的排序值是 1 ,其它兩個(gè)元素的排序值是 0 ,所以 ‘sqlite‘ 排在最后一個(gè)位置上。

4. Redis命令

Redis命令是用于在Redis服務(wù)器上執(zhí)行一些操作。
要在Redis服務(wù)器上運(yùn)行命令,需要一個(gè)Redis客戶端。Redis客戶端在Redis包中有提供,這個(gè)包在我們前面的安裝教程中就有安裝過(guò)了。

語(yǔ)法
以下是Redis客戶端的基本語(yǔ)法。

[yiibai@ubuntu:~]$ redis-cli
Shell

示例
以下示例說(shuō)明了如何啟動(dòng)Redis客戶端。

要啟動(dòng)Redis客戶端,請(qǐng)打開(kāi)終端并鍵入命令redis-cli。 這將連接到您的本地Redis服務(wù)器,現(xiàn)在可以運(yùn)行任何的Redis命令了。

[yiibai@ubuntu:~]$redis-cli redis 127.0.0.1:6379> redis 127.0.0.1:6379> PING PONG
Shell

在上面的示例中,連接到到在本地機(jī)器上運(yùn)行的Redis服務(wù)器并執(zhí)行PING命令,該命令檢查服務(wù)器是否正在運(yùn)行。

在遠(yuǎn)程服務(wù)器上運(yùn)行命令

要在Redis遠(yuǎn)程服務(wù)器上運(yùn)行命令,需要通過(guò)客戶端redis-cli連接到服務(wù)器

語(yǔ)法

[yiibai@ubuntu:~]$ redis-cli -h host -p port -a password
Shell

示例
以下示例顯示如何連接到Redis遠(yuǎn)程服務(wù)器,在主機(jī)(host)127.0.0.1,端口(port)6379上運(yùn)行,并使用密碼為 mypass

[yiibai@ubuntu:~]$ 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
Shell

5. Redis鍵命令

Redis鍵命令用于管理Redis中的鍵。以下是使用redis鍵命令的語(yǔ)法。

語(yǔ)法

redis 127.0.0.1:6379> COMMAND KEY_NAME
Shell

示例

redis 127.0.0.1:6379> SET akey redisOK redis 127.0.0.1:6379> DEL akey(integer) 1127.0.0.1:6379> GET akey(nil)
Shell

在上面的例子中,DEL是Redis的命令,而akey是鍵的名稱(chēng)。如果鍵被刪除,則命令的輸出將為(integer) 1,否則為(integer) 0。

Redis鍵命令

下表列出了與鍵相關(guān)的一些基本命令。

編號(hào)命令描述
1DEL key此命令刪除一個(gè)指定鍵(如果存在)。
2DUMP key此命令返回存儲(chǔ)在指定鍵的值的序列化版本。
3EXISTS key此命令檢查鍵是否存在。
4EXPIRE key seconds設(shè)置鍵在指定時(shí)間秒數(shù)之后到期/過(guò)期。
5EXPIREAT key timestamp設(shè)置在指定時(shí)間戳之后鍵到期/過(guò)期。這里的時(shí)間是Unix時(shí)間戳格式。
6PEXPIRE key milliseconds設(shè)置鍵的到期時(shí)間(以毫秒為單位)。
7PEXPIREAT key milliseconds-timestamp以Unix時(shí)間戳形式來(lái)設(shè)置鍵的到期時(shí)間(以毫秒為單位)。
8KEYS pattern查找與指定模式匹配的所有鍵。
9MOVE key db將鍵移動(dòng)到另一個(gè)數(shù)據(jù)庫(kù)。
10PERSIST key刪除指定鍵的過(guò)期時(shí)間,得永生。
11PTTL key獲取鍵的剩余到期時(shí)間。
12RANDOMKEY從Redis返回一個(gè)隨機(jī)的鍵。
13RENAME key newkey更改鍵的名稱(chēng)。
14PTTL key獲取鍵到期的剩余時(shí)間(以毫秒為單位)。
15RENAMENX key newkey如果新鍵不存在,重命名鍵。
16TYPE key返回存儲(chǔ)在鍵中的值的數(shù)據(jù)類(lèi)型。

6. Redis字符串

Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的語(yǔ)法。

redis 127.0.0.1:6379> COMMAND KEY_NAME
Shell

示例

redis 127.0.0.1:6379> SET mykey 'redis' OK redis 127.0.0.1:6379> GET mykey 'redis'
Shell

在上面的例子中,SETGET是redis中的命令,而mykey是鍵的名稱(chēng)。

Redis字符串命令

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

編號(hào)命令描述說(shuō)明
1SET key value此命令設(shè)置指定鍵的值。
2GET key獲取指定鍵的值。
3GETRANGE key start end獲取存儲(chǔ)在鍵上的字符串的子字符串。
4GETSET key value設(shè)置鍵的字符串值并返回其舊值。
5GETBIT key offset返回在鍵處存儲(chǔ)的字符串值中偏移處的位值。
6MGET key1 [key2..]獲取所有給定鍵的值
7SETBIT key offset value存儲(chǔ)在鍵上的字符串值中設(shè)置或清除偏移處的位
8SETEX key seconds value使用鍵和到期時(shí)間來(lái)設(shè)置值
9SETNX key value設(shè)置鍵的值,僅當(dāng)鍵不存在時(shí)
10SETRANGE key offset value在指定偏移處開(kāi)始的鍵處覆蓋字符串的一部分
11STRLEN key獲取存儲(chǔ)在鍵中的值的長(zhǎng)度
12MSET key value [key value …]為多個(gè)鍵分別設(shè)置它們的值
13MSETNX key value [key value …]為多個(gè)鍵分別設(shè)置它們的值,僅當(dāng)鍵不存在時(shí)
14PSETEX key milliseconds value設(shè)置鍵的值和到期時(shí)間(以毫秒為單位)
15INCR key將鍵的整數(shù)值增加1
16INCRBY key increment將鍵的整數(shù)值按給定的數(shù)值增加
17INCRBYFLOAT key increment將鍵的浮點(diǎn)值按給定的數(shù)值增加
18DECR key將鍵的整數(shù)值減1
19DECRBY key decrement按給定數(shù)值減少鍵的整數(shù)值
20APPEND key value將指定值附加到鍵

7. Redis哈希

Redis Hashes是字符串字段和字符串值之間的映射(類(lèi)似于PHP中的數(shù)組類(lèi)型)。 因此,它們是表示對(duì)象的完美數(shù)據(jù)類(lèi)型。

在Redis中,每個(gè)哈希(散列)可以存儲(chǔ)多達(dá)4億個(gè)鍵-值對(duì)。

示例

redis 127.0.0.1:6379> HMSET myhash name 'redis tutorial' description 'redis basic commands for caching' likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL myhash1) 'field1'2) 'Hello'3) 'field2'4) 'World'5) 'name'6) 'redis tutorial'
Shell

在上面的例子中,在名稱(chēng)為’myhash‘的哈希中設(shè)置了Redis教程的詳細(xì)信息(名稱(chēng),描述,喜歡,訪問(wèn)者)。

8. Redis列表

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

列表的最大長(zhǎng)度為2^32 - 1個(gè)元素(即4294967295,每個(gè)列表可存儲(chǔ)超過(guò)40億個(gè)元素)。

示例

redis 127.0.0.1:6379> LPUSH mylist 'redis' (integer) 1 redis 127.0.0.1:6379> LPUSH mylist 'mongodb'(integer) 2 redis 127.0.0.1:6379> LPUSH mylist 'mysql'(integer) 3 redis 127.0.0.1:6379> LRANGE mylist 0 10 1) 'mysql' 2) 'mongodb' 3) 'redis'
Shell

在上面的示例中,通過(guò)命令LPUSH將三個(gè)值插入到名稱(chēng)為“mylist”的Redis列表中。

8. Redis集合

Redis集合是唯一字符串的無(wú)序集合。 唯一值表示集合中不允許鍵中有重復(fù)的數(shù)據(jù)。

在Redis中設(shè)置添加,刪除和測(cè)試成員的存在(恒定時(shí)間O(1),而不考慮集合中包含的元素?cái)?shù)量)。列表的最大長(zhǎng)度為2^32 - 1個(gè)元素(即4294967295,每組集合超過(guò)40億個(gè)元素)。

示例

redis 127.0.0.1:6379> SADD myset 'redis' (integer) 1 redis 127.0.0.1:6379> SADD myset 'mongodb' (integer) 1 redis 127.0.0.1:6379> SADD myset 'mysql' (integer) 1 redis 127.0.0.1:6379> SADD myset 'mysql' (integer) 0 redis 127.0.0.1:6379> SMEMBERS 'myset' 1) 'mysql' 2) 'mongodb' 3) 'redis'
Shell

在上面的示例中,通過(guò)命令SADD將三個(gè)值插入到名稱(chēng)為“myset”的Redis集合中。

9. Redis發(fā)送訂閱

Redis發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。
Redis 發(fā)布訂閱(pub/sub)實(shí)現(xiàn)了消息系統(tǒng),發(fā)送者(在redis術(shù)語(yǔ)中稱(chēng)為發(fā)布者)在接收者(訂閱者)接收消息時(shí)發(fā)送消息。傳送消息的鏈路稱(chēng)為信道。

在Redis中,客戶端可以訂閱任意數(shù)量的信道。

示例

以下示例說(shuō)明了發(fā)布用戶概念的工作原理。 在以下示例中,一個(gè)客戶端訂閱名為“redisChat”的信道。

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

現(xiàn)在,兩個(gè)客戶端在名稱(chēng)為“redisChat”的相同信道上發(fā)布消息,并且上述訂閱的客戶端接收消息。

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 yiibai' (integer) 1 1) 'message' 2) 'redisChat' 3) 'Redis is a great caching technique' 1) 'message' 2) 'redisChat' 3) 'Learn redis by yiibai'
Shell

10. Redis事務(wù)

Redis事務(wù)允許在單個(gè)步驟中執(zhí)行一組命令。以下是事務(wù)的兩個(gè)屬性:

  • 事務(wù)中的所有命令作為單個(gè)隔離操作并按順序執(zhí)行。不可以在執(zhí)行Redis事務(wù)的中間向另一個(gè)客戶端發(fā)出的請(qǐng)求。
  • Redis事務(wù)也是原子的。原子意味著要么處理所有命令,要么都不處理。

語(yǔ)法示例

Redis事務(wù)由命令MULTI命令啟動(dòng),然后需要傳遞一個(gè)應(yīng)該在事務(wù)中執(zhí)行的命令列表,然后整個(gè)事務(wù)由EXEC命令執(zhí)行。

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

示例

以下示例說(shuō)明了如何啟動(dòng)和執(zhí)行Redis事務(wù)。

redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET mykey 'redis' QUEUED redis 127.0.0.1:6379> GET mykey QUEUED redis 127.0.0.1:6379> INCR visitors QUEUED redis 127.0.0.1:6379> EXEC 1) OK 2) 'redis' 3) (integer) 1
Shell

11. Redis腳本

Redis腳本用于使用Lua解釋器來(lái)執(zhí)行腳本。從Redis 2.6.0版開(kāi)始內(nèi)置到Redis中。使用腳本的命令是EVAL命令。

語(yǔ)法

以下是EVAL命令的基本語(yǔ)法。

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

示例

以下示例說(shuō)明了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'
Shell

12. Redis連接

Redis中的連接命令基本上是用于管理與Redis服務(wù)器的客戶端連接。

示例

以下示例說(shuō)明客戶端如何向Redis服務(wù)器驗(yàn)證自身,并檢查服務(wù)器是否正在運(yùn)行。

redis 127.0.0.1:6379> AUTH 'password' OK redis 127.0.0.1:6379> PING PONG
Shell

Redis連接命令

下表列出了與Redis連接相關(guān)的一些基本命令。

序號(hào)命令說(shuō)明
1AUTH password使用給定的密碼驗(yàn)證服務(wù)器
2ECHO message打印給定的字符串信息
3PING檢查服務(wù)器是否正在運(yùn)行
4QUIT關(guān)閉當(dāng)前連接
5SELECT index更改當(dāng)前連接的所選數(shù)據(jù)庫(kù)

13. Redis服務(wù)器

Redis服務(wù)器命令基本上是用于管理Redis服務(wù)器。

示例

以下示例說(shuō)明了如何獲取有關(guān)服務(wù)器的所有統(tǒng)計(jì)信息和信息。

127.0.0.1:6379> info# Serverredis_version:2.8.4redis_git_sha1:00000000redis_git_dirty:0redis_build_id:8f6097d7914679caredis_mode:standaloneos:Linux 3.19.0-25-generic i686arch_bits:32multiplexing_api:epollgcc_version:4.8.2process_id:1004run_id:1e53acea2aa628199c4e438a3ed815d96eebc036tcp_port:6379uptime_in_seconds:888450uptime_in_days:10hz:10lru_clock:1861984config_file:/etc/redis/redis.conf# Clientsconnected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:424872used_memory_human:414.91Kused_memory_rss:6709248used_memory_peak:424464used_memory_peak_human:414.52Kused_memory_lua:22528mem_fragmentation_ratio:15.79mem_allocator:jemalloc-3.4.1# Persistenceloading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1486607123rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:ok# Statstotal_connections_received:1total_commands_processed:263instantaneous_ops_per_sec:0rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:257keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:4793# Replicationrole:masterconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPUused_cpu_sys:24.65used_cpu_user:15.84used_cpu_sys_children:0.08used_cpu_user_children:0.00# Keyspacedb0:keys=14,expires=0,avg_ttl=0db1:keys=1,expires=0,avg_ttl=0127.0.0.1:6379>
Shell

14. Redis備份

Redis數(shù)據(jù)庫(kù)可以使用安全的方案,使得進(jìn)行連接的任何客戶端在執(zhí)行命令之前都需要進(jìn)行身份驗(yàn)證。要保護(hù)Redis安全,需要在配置文件中設(shè)置密碼。

示例

下面的示例顯示了保護(hù)Redis實(shí)例的步驟。

127.0.0.1:6379> CONFIG get requirepass 1) 'requirepass' 2) ''
Shell

默認(rèn)情況下,此屬性為空,這表示還沒(méi)有為此實(shí)例設(shè)置密碼。您可以通過(guò)執(zhí)行以下命令更改此屬性。

127.0.0.1:6379> CONFIG set requirepass 'yiibai' OK 127.0.0.1:6379> CONFIG get requirepass 1) 'requirepass' 2) 'yiibai'
Shell

設(shè)置密碼后,如果任何客戶端運(yùn)行命令而不進(jìn)行身份驗(yàn)證,則會(huì)返回一個(gè)(error) NOAUTH Authentication required.的錯(cuò)誤信息。 因此,客戶端需要使用AUTH命令來(lái)驗(yàn)證。

語(yǔ)法

以下是AUTH命令的基本語(yǔ)法。

127.0.0.1:6379> AUTH password
Shell

示例

127.0.0.1:6379> AUTH 'yiibai' OK 127.0.0.1:6379> SET mykey 'Test value' OK 127.0.0.1:6379> GET mykey 'Test value'
Shell

15. Redis客戶端連接

Redis在配置的監(jiān)聽(tīng)TCP端口和Unix套接字上等待和接受客戶端的連接(如果已啟用)。 當(dāng)接受新的客戶端連接時(shí),執(zhí)行以下操作 -

  • 由于Redis使用復(fù)用和非阻塞I/O,因此客戶端套接字處于非阻塞狀態(tài)。
  • 設(shè)置TCP_NODELAY選項(xiàng)是為了確保連接不延遲。
  • 創(chuàng)建可讀文件事件,以便Redis能夠在套接字上讀取新數(shù)據(jù)時(shí)收集客戶端查詢。

最大客戶數(shù)

在Redis配置文件(redis.conf)中,有一個(gè)名稱(chēng)為maxclients的屬性,它描述了可以連接到Redis的客戶端的最大數(shù)量。

以下是命令的基本語(yǔ)法。

127.0.0.1:6379> config get maxclients1) 'maxclients'2) '3984'
Shell

默認(rèn)情況下,此屬性設(shè)置為10000(取決于操作系統(tǒng)的文件描述符限制的最大數(shù)量),但您可以更改此屬性。

示例

在以下示例中,我們已將客戶端的最大數(shù)目設(shè)置為100000,并啟動(dòng)服務(wù)器。

yiibai@ubuntu:~$ redis-server --maxclients 100000
Shell

客戶端命令

編號(hào)命令描述
1CLIENT LIST返回連接到Redis服務(wù)器的客戶端列表
2CLIENT SETNAME為當(dāng)前連接分配/設(shè)置新的名稱(chēng)
3CLIENT GETNAME返回由CLIENT SETNAME設(shè)置的當(dāng)前連接的名稱(chēng)
4CLIENT PAUSE這是一個(gè)連接控制命令,能夠?qū)⑺蠷edis客戶端按指定的時(shí)間量(以毫秒為單位)掛起
5CLIENT KILL此命令關(guān)閉指定的客戶端連接。

16. Redis管道

Redis是一個(gè)TCP服務(wù)器,支持請(qǐng)求/響應(yīng)協(xié)議。 在Redis中,請(qǐng)求通過(guò)以下步驟完成:

  • 客戶端向服務(wù)器發(fā)送查詢,并從套接字讀取,通常以阻塞的方式,用于服務(wù)器響應(yīng)。
  • 服務(wù)器處理命令并將響應(yīng)發(fā)送回客戶端。

管道的意義

管道的基本含義是,客戶端可以向服務(wù)器發(fā)送多個(gè)請(qǐng)求,而不必等待回復(fù),并最終在一個(gè)步驟中讀取回復(fù)。

示例

要檢查Redis管道,只需啟動(dòng)Redis實(shí)例,并在終端中鍵入以下命令。

$(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
Shell

在上面的例子中,我們將使用PING命令檢查Redis連接。這里設(shè)置了一個(gè)名稱(chēng)為tutorial的字符串,值為redis。 然后得到鍵值,并增加 visitor 數(shù)量三次。 在結(jié)果中,我們可以看到所有命令都提交到Redis一次,Redis在一個(gè)步驟中提供所有命令的輸出。

管道的好處

這種技術(shù)的好處是大大提高了協(xié)議性能。通過(guò)管道從連接到本地主機(jī)速度增加五倍,因特網(wǎng)連接的至少快一百倍。

17. Redis分區(qū)

分區(qū)是將數(shù)據(jù)拆分為多個(gè)Redis實(shí)例的過(guò)程,因此每個(gè)實(shí)例只包含一部分鍵。

分區(qū)的優(yōu)點(diǎn)

  • 它允許更大的數(shù)據(jù)庫(kù),使用更多計(jì)算機(jī)的內(nèi)存總和。如果沒(méi)有分區(qū),則限制為單個(gè)計(jì)算機(jī)可以支持的內(nèi)存量。
  • 它允許將計(jì)算能力擴(kuò)展到多個(gè)核心和多個(gè)計(jì)算機(jī),并將網(wǎng)絡(luò)帶寬擴(kuò)展到多個(gè)計(jì)算機(jī)和網(wǎng)絡(luò)適配器。

分區(qū)的缺點(diǎn)

  • 通常不支持涉及多個(gè)鍵的操作。 例如,如果兩個(gè)集合存儲(chǔ)在映射到不同Redis實(shí)例的鍵中,則不能執(zhí)行兩個(gè)集合之間的交集操作。
  • 不能使用涉及多個(gè)鍵的Redis事務(wù)。
  • 分區(qū)粒度是關(guān)鍵,因此不可能使用單個(gè)巨大的鍵(如非常大的排序集合)來(lái)分割數(shù)據(jù)集。
  • 使用分區(qū)時(shí),數(shù)據(jù)處理更復(fù)雜。 例如,必須處理多個(gè)RDB/AOF文件,并獲得數(shù)據(jù)的備份,您需要聚合來(lái)自多個(gè)實(shí)例和主機(jī)的持久性文件。
  • 添加和刪除容量可能很復(fù)雜。 例如,Redis Cluster支持大多數(shù)透明的數(shù)據(jù)重新平衡,具有在運(yùn)行時(shí)添加和刪除節(jié)點(diǎn)的能力。但是,其他系統(tǒng)(如客戶端分區(qū)和代理)不支持此功能。但可以使用一種叫作Presharding的技術(shù)來(lái)處理這方面的問(wèn)題。

分區(qū)類(lèi)型

Redis中有兩種類(lèi)型的分區(qū)。假設(shè)有四個(gè)Redis實(shí)例:R0,R1,R2,R3以許多代表用戶的鍵,如user:1,user:2,…等等。

范圍分區(qū)

范圍分區(qū)通過(guò)將對(duì)象的范圍映射到特定的Redis實(shí)例來(lái)實(shí)現(xiàn)。假設(shè)在上面示例中,從ID 0到ID 10000的用戶將進(jìn)入實(shí)例R0,而從ID 10001到ID 20000的用戶將進(jìn)入實(shí)例R1,以此類(lèi)推。

哈希分區(qū)

在這種類(lèi)型的分區(qū)中,使用散列函數(shù)(例如,模函數(shù))將鍵轉(zhuǎn)換成數(shù)字,然后將數(shù)據(jù)存儲(chǔ)在不同的Redis實(shí)例中。

18. Java連接Redis

在Java程序中使用Redis之前,需要確保在機(jī)器上安裝了Redis的Java驅(qū)動(dòng)程序和Java環(huán)境??梢韵仍趯ava電腦上并配置好環(huán)境。

安裝

現(xiàn)在,讓我們看看如何設(shè)置Redis Java驅(qū)動(dòng)程序。

Java連接到Redis服務(wù)器

請(qǐng)參考以下一個(gè)簡(jiǎn)單的示例代碼 -

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()); } }
Java

現(xiàn)在,編譯并運(yùn)行上面的程序來(lái)測(cè)試與Redis服務(wù)器的連接??梢愿鶕?jù)需要更改路徑。假設(shè)jedis.jar的當(dāng)前版本在當(dāng)前路徑中可以使用。
執(zhí)行上面代碼,將生成以下結(jié)果 -

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

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')); } }
Java

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

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)); } } }
Java

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

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)); } } }
Java

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

19. PHP連接Redis

在php程序中使用Redis之前,需要確保在機(jī)器上安裝了Redis的PHP驅(qū)動(dòng)程序和PHP環(huán)境。可以先在將PHP電腦上并配置好環(huán)境。

安裝

現(xiàn)在,讓我們看看如何設(shè)置Redis PHP驅(qū)動(dòng)程序。
從github庫(kù)下載phpredis=> http://github.com/nicolasff/phpredis。 當(dāng)下載它之后,提取文件到phpredis目錄。在Ubuntu上,安裝以下擴(kuò)展。

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

現(xiàn)在,將“modules”文件夾的內(nèi)容復(fù)制并粘貼到PHP擴(kuò)展目錄中,并在php.ini中添加以下行。

extension = redis.so
Shell

現(xiàn)在,Redis PHP安裝完成!

使用連接到Redis服務(wù)器

<?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(); ?>
PHP

當(dāng)程序執(zhí)行時(shí),將產(chǎn)生以下結(jié)果。

Connection to server sucessfully Server is running: PONG
Shell

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:: ' .$redisget('tutorial-name'); ?>
PHP

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

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); ?>
PHP

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

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); ?>
PHP

執(zhí)行上面代碼,將生成以下結(jié)果 -

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

20. C#連接Redis

前面我們已經(jīng)準(zhǔn)備成功開(kāi)啟Redis服務(wù),其端口號(hào)為6379,接下來(lái)我們就看看如何使用C#語(yǔ)言來(lái)操作Redis。就如MongoDB一樣,要操作Redis服務(wù),自然就需要下載C#的客戶端,這里通過(guò)Nuget下載了“ServiceStack.Redis”客戶端,引入成功之后,就可以使用C#來(lái)對(duì)Redis服務(wù)進(jìn)行操作了。

由于Redis一般是用來(lái)作為緩存的,也就是一般我們把一些不經(jīng)常改變的數(shù)據(jù)通過(guò)Redis緩存起來(lái),之后用戶的請(qǐng)求就不需要再訪問(wèn)數(shù)據(jù)庫(kù),而可以直接從Redis緩存中直接獲取,這樣就可以減輕數(shù)據(jù)庫(kù)服務(wù)器的壓力以及加快響應(yīng)速度。既然是用來(lái)做緩存的,也就是通過(guò)指定key值來(lái)把對(duì)應(yīng)Value保存起來(lái),之后再根據(jù)key值來(lái)獲得之前緩存的值。具體的操作代碼如下所示,這里就不過(guò)多介紹了。

請(qǐng)參考以下代碼 -

class Program { static void Main(string[] args) { //在Redis中存儲(chǔ)常用的5種數(shù)據(jù)類(lèi)型:String,Hash,List,SetSorted set var client = new RedisClient('127.0.0.1', 6379); //AddString(client); //AddHash(client); //AddList(client); //AddSet(client); AddSetSorted(client); Console.ReadLine(); } private static void AddString(RedisClient client) { var timeOut = new TimeSpan(0,0,0,30); client.Add('Test', 'Learninghard', timeOut); while (true) { if (client.ContainsKey('Test')) { Console.WriteLine('String Key: Test -Value: {0}, 當(dāng)前時(shí)間: {1}', client.Get<string>('Test'), DateTime.Now); Thread.Sleep(10000); } else { Console.WriteLine('Value 已經(jīng)過(guò)期了,當(dāng)前時(shí)間:{0}', DateTime.Now); break; } } var person = new Person() {Name = 'Learninghard', Age = 26}; client.Add('lh', person); var cachePerson = client.Get<Person>('lh'); Console.WriteLine('Person's Name is : {0}, Age: {1}', cachePerson.Name, cachePerson.Age); } private static void AddHash(RedisClient client) { if (client == null) throw new ArgumentNullException('client'); client.SetEntryInHash('HashId', 'Name', 'Learninghard'); client.SetEntryInHash('HashId', 'Age', '26'); client.SetEntryInHash('HashId', 'Sex', '男'); var hashKeys = client.GetHashKeys('HashId'); foreach (var key in hashKeys) { Console.WriteLine('HashId--Key:{0}', key); } var haskValues = client.GetHashValues('HashId'); foreach (var value in haskValues) { Console.WriteLine('HashId--Value:{0}', value); } var allKeys = client.GetAllKeys(); //獲取所有的key。 foreach (var key in allKeys) { Console.WriteLine('AllKey--Key:{0}', key); } } private static void AddList(RedisClient client) { if (client == null) throw new ArgumentNullException('client'); client.EnqueueItemOnList('QueueListId', '1.Learnghard'); //入隊(duì) client.EnqueueItemOnList('QueueListId', '2.張三'); client.EnqueueItemOnList('QueueListId', '3.李四'); client.EnqueueItemOnList('QueueListId', '4.王五'); var queueCount = client.GetListCount('QueueListId'); for (var i = 0; i < queueCount; i ) { Console.WriteLine('QueueListId出隊(duì)值:{0}', client.DequeueItemFromList('QueueListId')); //出隊(duì)(隊(duì)列先進(jìn)先出) } client.PushItemToList('StackListId', '1.Learninghard'); //入棧 client.PushItemToList('StackListId', '2.張三'); client.PushItemToList('StackListId', '3.李四'); client.PushItemToList('StackListId', '4.王五'); var stackCount = client.GetListCount('StackListId'); for (var i = 0; i < stackCount; i ) { Console.WriteLine('StackListId出棧值:{0}', client.PopItemFromList('StackListId')); //出棧(棧先進(jìn)后出) } } //它是string類(lèi)型的無(wú)序集合。set是通過(guò)hash table實(shí)現(xiàn)的,添加,刪除和查找,對(duì)集合我們可以取并集,交集,差集 private static void AddSet(RedisClient client) { if (client == null) throw new ArgumentNullException('client'); client.AddItemToSet('Set1001', 'A'); client.AddItemToSet('Set1001', 'B'); client.AddItemToSet('Set1001', 'C'); client.AddItemToSet('Set1001', 'D'); var hastset1 = client.GetAllItemsFromSet('Set1001'); foreach (var item in hastset1) { Console.WriteLine('Set無(wú)序集合Value:{0}', item); //出來(lái)的結(jié)果是無(wú)須的 } client.AddItemToSet('Set1002', 'K'); client.AddItemToSet('Set1002', 'C'); client.AddItemToSet('Set1002', 'A'); client.AddItemToSet('Set1002', 'J'); var hastset2 = client.GetAllItemsFromSet('Set1002'); foreach (var item in hastset2) { Console.WriteLine('Set無(wú)序集合ValueB:{0}', item); //出來(lái)的結(jié)果是無(wú)須的 } var hashUnion = client.GetUnionFromSets(new string[] { 'Set1001', 'Set1002' }); foreach (var item in hashUnion) { Console.WriteLine('求Set1001和Set1002的并集:{0}', item); //并集 } var hashG = client.GetIntersectFromSets(new string[] { 'Set1001', 'Set1002' }); foreach (var item in hashG) { Console.WriteLine('求Set1001和Set1002的交集:{0}', item); //交集 } var hashD = client.GetDifferencesFromSet('Set1001', new string[] { 'Set1002' }); //[返回存在于第一個(gè)集合,但是不存在于其他集合的數(shù)據(jù)。差集] foreach (var item in hashD) { Console.WriteLine('求Set1001和Set1002的差集:{0}', item); //差集 } } /* sorted set 是set的一個(gè)升級(jí)版本,它在set的基礎(chǔ)上增加了一個(gè)順序的屬性,這一屬性在添加修改.元素的時(shí)候可以指定, * 每次指定后,zset(表示有序集合)會(huì)自動(dòng)重新按新的值調(diào)整順序??梢岳斫鉃橛辛械谋恚涣写?value,一列存順序。操作中key理解為zset的名字. */ private static void AddSetSorted(RedisClient client) { if (client == null) throw new ArgumentNullException('client'); client.AddItemToSortedSet('SetSorted1001', 'A'); client.AddItemToSortedSet('SetSorted1001', 'B'); client.AddItemToSortedSet('SetSorted1001', 'C'); var listSetSorted = client.GetAllItemsFromSortedSet('SetSorted1001'); foreach (var item in listSetSorted) { Console.WriteLine('SetSorted有序集合{0}', item); } client.AddItemToSortedSet('SetSorted1002', 'A', 400); client.AddItemToSortedSet('SetSorted1002', 'D', 200); client.AddItemToSortedSet('SetSorted1002', 'B', 300); // 升序獲取第一個(gè)值:'D' var list = client.GetRangeFromSortedSet('SetSorted1002', 0, 0); foreach (var item in list) { Console.WriteLine(item); } //降序獲取第一個(gè)值:'A' list = client.GetRangeFromSortedSetDesc('SetSorted1002', 0, 0); foreach (var item in list) { Console.WriteLine(item); } } } class Person { public string Name { get; set; } public int Age { get; set; } }
C#

如何要想查看自己操作是否成功,也可以像MongoDB那樣下載一個(gè)客戶端工具,這里推薦一款Redis Desktop Manager。這個(gè)工具就相當(dāng)于SQL Server的客戶端工具一樣。通過(guò)這款工具可以查看Redis服務(wù)器中保存的數(shù)據(jù)和對(duì)應(yīng)格式。其使用也非常簡(jiǎn)單,只需要添加一個(gè)Redis服務(wù)連接即可。該工具的下載地址為:http://pan.baidu.com/s/1sjp55Ul

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服