Redis入門
簡介
Redis是一個開源,高級的鍵值存儲和一個適用的解決方案,用於構建高性能,可擴展的Web應用程序。其主要特點有:
- Redis將其數據庫完全保存在內存中,僅使用磁盤進行持久化。(內存數據庫)
- 與其它鍵值數據存儲相比,Redis有一組相對豐富的數據類型。
- Redis可以將數據複製到任意數量的從機中。
爲啥我們要用redis,希望下面的優點能說服你:
- 異常快 - Redis非常快,每秒可執行大約110000次的設置(SET)操作,每秒大約可執行81000次的讀取/獲取(GET)操作。
- 支持豐富的數據類型 - Redis支持開發人員常用的大多數數據類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來解決各種問題,因爲我們知道哪些問題可以更好使用地哪些數據類型來處理解決。
- 操作具有原子性 - 所有Redis操作都是原子操作,這確保如果兩個客戶端併發訪問,Redis服務器能接收更新的值。
- 多實用工具 - Redis是一個多實用工具,可用於多種用例,如:緩存,消息隊列(Redis本地支持發佈/訂閱),應用程序中的任何短期數據,例如,web應用程序中的會話,網頁命中計數等。
安裝
從官網下載最新stable(穩定)版。放到linux服務器上。
按照如下命令安裝
tar -zvxf redis-3.2.8.tar.gz #解壓安裝包 cd redis-3.2.8 make /#編譯c源碼(需要先安裝gcc編譯器) make PREFIX=/usr/local/redis install #安裝到指定目錄下,一般Linux的軟件習慣裝載/usr/local下面 cp redis.conf /usr/local/redis/ #複製解壓目錄下的配置文件到redis安裝目錄 bin/redis-server redis.conf #啓動redis服務並指定配置文件 ./redis-cli #新開一個窗口並啓動客戶端
如果是遠程主機連接的話
redis-cli -h host -p port -a password
將redis啓動爲後臺服務(設置redis.conf並修改daemonize的值)
daemonize yes #設置爲後天進程,默認爲no
基本數據類型的操作
字符串操作(詳細操作可以參考官方文檔或者教程)
Redis字符串命令用於管理Redis中的字符串值。以下是使用Redis字符串命令的基本語法:
SET mykey "redis" #設置key-value對 ex: SET key value # 此命令設置指定鍵的值。 GET key # 獲取指定鍵的值。 GETRANGE key start end # 獲取存儲在鍵上的字符串的子字符串。 GETSET key value # 設置鍵的字符串值並返回其舊值。
List操作(可以存在相同元素,如果需要不能存在相同元素則可以使用Set操作)
在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將爲該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那麼該鍵也將會被從數據庫中刪除。
lpush list1 "forever" #向list1中加入 lpush list1 "cll" #向list1中加入 lpush list1 "wifi" #向list1中加入 LLEN key #獲取列表的長度 LPOP key #刪除並獲取列表中的第一個元素 LPUSH key value1 [value2] #將一個或多個值添加到列表 LPUSHX key value #僅當列表存在時,才向列表添加值 LRANGE key start stop #從列表中獲取一系列元素 LREM key count value #從列表中刪除元素
Hash操作
Redis Hashes是字符串字段和字符串值之間的映射。 因此,它們是表示對象的完美數據類型。在Redis中,每個哈希(散列)可以存儲多達4億個鍵-值對。
hset map1 name zs #向map1的hash表中加入key-value HDEL key field2 [field2] #刪除一個或多個哈希字段。 HEXISTS key field #判斷是否存在散列字段。 HGET key field #獲取存儲在指定鍵的哈希字段的值。 HGETALL key #獲取存儲在指定鍵的哈希中的所有字段和值
Set操作
Redis集合是唯一字符串的無序集合。 唯一值表示集合中不允許鍵中有重複的數據。在Redis中設置添加,刪除和測試成員的存在(恆定時間O(1),而不考慮集合中包含的元素數量)。列表的最大長度爲
2^32 - 1
個元素SADD myset "redis" #添加到set SMEMBERS "myset" #獲取myset所有元素 SCARD key #獲取集合中的成員數 SDIFF key1 [key2] # 減去多個集合 SDIFFSTORE destination key1 [key2] # 減去多個集並將結果集存儲在鍵中 SINTER key1 [key2] # 相交多個集合 SINTERSTORE destination key1 [key2] # 交叉多個集合並將結果集存儲在鍵中 SISMEMBER key member # 判斷確定給定值是否是集合的成員