Redis入門筆記 http://www.bieryun.com/3156.html
一、Redis概述
Redis由來
2008年,意大利的一家創業公司MeRzia推出了一款基于MySQL的網站實時統計系統 LLOOGG,然而沒過多久該公司的創始人 SalvatoRe Sanfilippo 便對MySQL 的性能感到失望,于是他決定親自為 LLOOGG 量身定做一個 資料庫,并并于 2009 年開發完成,這個資料庫就是Redis。
什麼是Redis
Redis 是用 C 語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值資料類型來适應不同場景下的存儲需求,目前為止 Redis 支援的鍵值資料類型如下:
1. 字元串類型
2. 散列類型
3. 清單類型
4. 集合類型
5. 有序集合類型。
Redis的應用場景
緩存(資料查詢、短連接配接、新聞内容、商品内容等等)(最多使用);
聊天室的線上好友清單;
任務隊列(秒殺、搶購、12306等等);
應用排行榜;
網站通路統計;
資料過期處理(可以精确到毫秒);
分布式叢集架構中的session分離。
二、Redis安裝、啟動和停止
Redis是C語音開發,安裝redis需要先将官網下載下傳的源碼進行編譯,編譯依賴gcc環境。如果沒有gcc,需要安裝gcc:
1、 打開xshell,連結Linux伺服器,運作yum install gcc-c++;
至此,gcc環境安裝好了,則可以進行redis的安裝了。
2、下載下傳壓縮包:wget http://download.redis.io/releases/redis-3.0.6.tar.gz
3、解壓:tar xzf redis-3.0.6.tar.gz
3、 進入redis路徑下,cd redis-3.0.6,執行‘make’指令進行基本的編譯。(如果沒有安裝gcc,此時會出錯);
4、make完成;
5、安裝到指定目錄下:make FREFIX=/usr/local/redis install
6、回到root下的redis-3.0.6路徑下,拷貝redis.conf檔案到/usr/local/redis路徑下,執行cp redis.conf /usr/local/redis
7、進入該目錄下,啟動redis(但這隻是前端啟動,啟動完了以後無法進行操作,需要ctrl+c退出):
cd /usr/local/redis/bin
./redis-server
8、接下來,修改redis.conf檔案 vim redis.conf
将redis.conf檔案中該行的“”no”改為“yes”
9、重新啟動redis并加載配置檔案,此時redis已經成功啟動
10、可以通過以下指令檢視redis的啟動情況:ps -ef | grep -i redis
可以看出redis的預設端口号為6379
11、停止redis:./bin/redis-cli shutdown
三、Redis的使用
1、Redis啟動
./bin/redis-server ./redis-conf
2、進入redis用戶端./bin/redis-cli
3、檢視連接配接情況,以下情況證明連接配接成功
4、set、get、del、keys *指令進行存入、讀取、删除、檢視全部key操作;
四、Jedis入門
Jedis是Redis官方首選的Java用戶端開發包
1、jedis下載下傳位址
https://github.com/xetorthio/jedis
2、jedis使用
1)eclipse建立一個java 項目,例如jedis
2)建立lib檔案夾放入以下兩個jar包,并Add to Build Path
使用Java操作Redis需要jedis-2.1.0.jar,
下載下傳位址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip
如果需要使用redis連接配接池的話,還需要commons-pool-1.5.4.jar,
下載下傳位址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip
3)jedis的使用
五、redis的資料結構
1.存儲字元串常用指令
1)指派:set
2)取值:get
3)删除:del
4)擴充指令:incr(遞增)、decr(遞減)、incrby、decrby、append
2.存儲hash的常用指令
1)指派:hset
2)取值
3)删除
4)增加數字
5)自學指令
3.存儲list
1)ArrayList使用數組方式
2)LinkedList使用雙向連結方式
3)雙向連結清單中增加資料
4)雙向連結清單中删除資料
常用指令:
1)兩端添加
lpush、rpush
2)兩端彈出
lpop、rpop
3)檢視清單
lrange
4)擷取清單元素個數
llen
lpushx、rpushx、lset、linsert.. before、linsert ..after
3.存儲set
和list類型不同的是,set集合中不允許出現重複的元素。
1)添加、删除元素
sadd、srem
2)擷取集合中的元素
smembers(檢視所有元素)、sismembers(判斷是否在集合内)
3)集合中的差集運算
sdiff
4)集合中并集運算
sunion(會去除重複元素)
5)集合中的交集運算
sinter
6)擴充指令
sranmember(随機輸出)、sdiffstore(差集放入一個指定集合中)、sinterstore(交集放入一個指定集合中)、sunionstore(并集放入一個指定集合中)
4.存儲sorted-set
sorted-set在集合中的位置是有序的
使用場景:遊戲排名、微網誌熱點等
1)添加元素
zadd
2)删除元素
zrem
3)擷取元素
zscore
4)擷取範圍
zrange、zrange..withscores
5.keys的通用操作
key * //擷取全部key
key my? //擷取全部my開頭的key
del my1 my2 my3 //删除my1 my2 my3的key
exists my1 //判斷是否存在my1的key
rename name myname //重命名name為myname
expire myname 1000 //設定myname的過期時間為1000s
ttl myname //檢視剩餘時間
type myname //檢視類型
六、Redis的特性
多資料庫
redis預設有db0~db15之多。redis下,資料庫是由一個整數索引辨別,而不是由一個資料庫名稱。預設情況下,一個用戶端連接配接到資料庫0。可以通過下面的指令來切換到不同的資料庫下:
select 0、select 1、select 2….
Redis事務
事務提供了一種“将多個指令打包, 然後一次性、按順序地執行”的機制, 并且事務在執行的期間不會主動中斷 —— 伺服器在執行完事務中的所有指令之後, 才會繼續處理其他用戶端的其他指令。
Redis 通過 MULTI 、 DISCARD 、 EXEC 和 WATCH 四個指令來實作事務功能。
一個事務從開始到執行會經曆以下三個階段:開始事務、指令入隊、執行事務。
它先以 MULTI 開始一個事務, 然後将多個指令入隊到事務中, 最後由 EXEC 指令觸發事務, 一并執行事務。
七、redis持久化
持久化用于重新開機後的資料恢複。
兩種持久化方式,詳細介紹見:
https://www.cnblogs.com/zhoujinyi/archive/2013/05/26/3098508.html
RDB方式:Snapshot(RDB)<二進制檔案>,Snapshot快照存儲,是預設的持久化方式,即按照一定的政策周期性的将資料儲存到磁盤。對應産生的資料檔案為dump.rdb,通過配置檔案中的save參數來定義快照的周期。
AOF方式: AOF(Append Only File)<二進制檔案>比RDB方式有更好的持久化性。由于在使用AOF持久化方式時,Redis會将每一個收到的寫指令都通過Write函數追加到檔案最後,類似于MySQL的binlog。當Redis重新開機是會通過重新執行檔案中儲存的寫指令來在記憶體中重建整個資料庫的内容。