Redis宋彼,編譯安裝 和初步使用都很簡單衣迷,考驗的還是對數(shù)據(jù)結(jié)構(gòu)的理解仰挣;對應(yīng)不同的問題選擇合適的數(shù)據(jù)類型來解決佑颇;有時間可以多看看 Redis 所實現(xiàn)的 各種命令监右,中文版梦谜;
Redis,本質(zhì)上殴瘦,是一個 data structures server,即數(shù)據(jù)結(jié)構(gòu)服務(wù)器号杠,所謂的數(shù)據(jù)結(jié)構(gòu)蚪腋,就是數(shù)據(jù)的一種特定組織方式,比如 hash(哈希表姨蟋,即散列)屉凯、list(鏈表)、set(集合)眼溶、zset(sorted set悠砚,有序集合);Redis 實現(xiàn)了以上所有的數(shù)據(jù)結(jié)構(gòu)的存取訪問(把 Redis 稱為 key-value 存儲系統(tǒng)是對 Redis 的一種最粗淺簡單的認知)堂飞;Redis 和 MySQL 一起構(gòu)成了 Web 開發(fā)必不可少的兩個高性能數(shù)據(jù)存儲服務(wù)灌旧,值得好好使用绑咱;
- 支持豐富的數(shù)據(jù)類型;
特定的數(shù)據(jù)類型對于解決特定的問題來說枢泰,更容易理解描融、也更簡單、更易維護衡蚂;
應(yīng)用場景非常多:緩存窿克、消息、隊列毛甲、會話年叮、計數(shù); - 從網(wǎng)絡(luò)存取角度認識 Redis玻募,實現(xiàn)了簡單只损、豐富的 存取命令;
- 從持久化角度認識 Redis补箍,可以堪比 MySQL改执;
- 從可用性角度認識 Redis,類似于 MySQL bin log 機制所建立的 Master/Slave 主從關(guān)系很牢靠坑雅;實現(xiàn)了可擴展性和高可用性辈挂;
支持多級主從關(guān)系:Slaves are able to accept connections from other slaves. - 從接口語言便利性認識 Reids,支持廣泛裹粤,幾乎任何語言都有實現(xiàn)终蒂;
- 如果你熟悉 memcached:
memcached 是一個簡單的 string 和 object 的緩存,沒有那么多數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)類型)遥诉;僅從這一點拇泣,就和 Redis 不在一個數(shù)量級上;
僅從緩存性能看矮锈,Redis 也遠勝于 memcached 的服務(wù)霉翔;
Redis means REmote DIctionary Server.
命令小記(命令字大寫)
-
KEYS
KEYS pattern
:list of keys matching pattern;
命令行計算符合 pattern 的 key 的個數(shù):redis-cli KEYS "abc:*" | wc -l
基于性能考慮苞笨,建議慎用债朵; -
INFO
returns information and statistics about the server; 在 Keyspace section 有各個 database 的統(tǒng)計;
INFO keyspace
:方便查看各個庫關(guān)于 key space 的基本情況瀑凝; -
DBSIZE
Return the number of keys in the currently-selected database. -
TYPE 查看key的類型
TYPE key
-
SORT
SORT key BY nosort GET #
-
SCAN:
SCAN cursor [MATCH pattern] [COUNT count]
遍歷元素序芦,支持匹配模式;
iterates the set of keys in the currently selected Redis database.(遍歷當前庫的所有 key)粤咪;
The SCAN command and the closely related commands SSCAN, HSCAN and ZSCAN are used in order to incrementally iterate over a collection of elements.
string
hash 哈希(散列 | 字典)
-
HSET:
HSET key field value
hash 適合存儲一條表記錄(記錄 id 做 key)的各個字段名值對 field => value; -
HKEYS:
HKEYS key
Returns all field names in the hash stored at key.
列出所有字段名宪塔,有時會混淆 key and field磁奖;
如果和 HVALS 相對,這個命令使用 hfields 更好蝌麸; -
HGETALL:
HGETALL key
Returns all fields and values of the hash stored at key. -
HLEN:
HLEN key
Returns the number of fields contained in the hash stored at key.
列表 list(列表是有序的)
-
LPUSH
列表 list 的命令点寥; - LLEN
-
LRANGE:
LRANGE key start stop
Returns the specified elements of the list stored at key.
集合 sets 的命令(以 SADD 為代表)
- sets 集合:一堆不重復(fù)值的組合;
-
SADD:
SADD key member [member ...]
集合由一個一個的 member 組成来吩; -
SCARD:
SCARD key
Returns the set cardinality (number of elements) of the set stored at key.
返回 member 個數(shù)敢辩; -
SMEMBERS:
SMEMBERS key
Returns all the members of the set value stored at key.
返回集合所有的 member 值;
有序集合 sorted sets 的命令(以 ZADD 為代表)
- 和 sets 相比弟疆,sorted sets 是將 set 中的 member 增加了一個權(quán)重參數(shù) score戚长,使得集合中的 member 能夠按 score 進行有序排列;
- 對照普通集合 sets 來了解有序集合 sorted sets 的命令是很有意思的怠苔;
例如:ZADD同廉,ZCARD,ZRANGE柑司;
關(guān)于 EXPIRE
-
EXPIRE:
EXPIRE key seconds
設(shè)置過期時間迫肖;
設(shè)置 0 秒或者負值表示立刻過期; -
TTL:
TTL key
查看還有多長時間過期攒驰;
-1 表示未設(shè)過期蟆湖;-2 表示 key 不存在; -
PERSIST:
PERSIST key
立刻取消過期時間的設(shè)置玻粪,變?yōu)橛谰么嬖冢?/li> -
OBJECT:
OBJECT IDLETIME <key>
可以查看 key 空閑多長時間(秒)了隅津,可以換算出最后一次訪問時間; -
DEBUG OBJECT:
DEBUG OBJECT key
這個命令也很有幫助劲室,lru_seconds_idle 就是空閑秒數(shù)伦仍;
為了安全,生產(chǎn)環(huán)境通常在配置文件中使用 rename-command 配置指令重命名這些命令名字:CONFIG很洋、FLUSHDB充蓝、FLUSHALL、DEBUG喉磁; - MONITOR 實時顯示 redis-server 處理的每個命令棺克;
關(guān)于 CONFIG
CONFIG 是一組命令,通過 CONFIG GET 進一步了解线定;
使用何種數(shù)據(jù)類型?
- https://redislabs.com/blog/5-key-takeaways-for-developing-with-redis#.WDBEZKJ96hc
- http://stackoverflow.com/questions/24847539/redis-key-design
- http://openmymind.net/Data-Modeling-In-Redis/
- https://www.quora.com/What-are-5-mistakes-to-avoid-when-using-Redis
- https://developer.mozilla.org/en-US/docs/Mozilla/Redis_Tips
- http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html
- http://antirez.com/news/93
- https://www.linkedin.com/pulse/5-basic-steps-key-value-store-database-design-laszlo-wagner
參考文檔
- Redis repository @ GitHub确买;
-
db-engines.com 排名斤讥;
根據(jù)統(tǒng)計,Redis 在鍵值數(shù)據(jù)存儲引擎的排名中位于第一名,很受歡迎芭商。 - 性能對比派草;