歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Redis學習及實踐

Redis學習及實踐

日期:2017/2/28 14:35:18   编辑:Linux教程

因為最近項目會用到redis,之前在項目中會用到memcached,所以對redis進行了一番研究,這裡做一個較詳細的整理以供分享!

一、redis介紹

redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集合和有序集合。支持在服務器端計算集合的並,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構服務器。

Redis的所有數據都是保存在內存中,然後不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數據變化都寫入到一個append only file(aof)裡面(這稱為“全持久化模式”)。它提供Python,Ruby,Erlang,PHP客戶端,使用很方便。問題是這個項目還很新,可能還不足夠穩定,而且沒有在實際的一些大型系統應用的實例。此外,缺乏mc中批量get也是比較大的問題,始終批量獲取跟多次獲取的網絡開銷是不一樣的。

性能測試結果:

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次。

二、redis安裝
2.1、linux安裝
2.1.1、下載安裝包
Wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz

(筆者當前的最新版是2.6.14,可以去https://code.google.com/p/redis/downloads/list查看最新版)

1 [root@localhost 4setup]# wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz

2.1.2,安裝部署
123 [root@localhost 4setup]# tar xzf redis-2.6.14.tar.gz
[root@localhost 4setup]# cd redis-2.6.14
[root@localhost redis-2.6.14]# make

2.1.3、啟動服務
在src目錄下,運行redis-server。如果不指定conf文件的話,則按默認配置啟動,如果指定conf文件的話則按conf文件的配置啟動:
1 ./redis-server ../etc/redis.conf

Redis 服務端的默認連接端口是 6379。
2.1.4、客戶端連接
在src目錄下,運行redis-cli。比如,連接本機的redis,可用如下命令:
1 ./redis-cli -h 127.0.0.1 -p 6379

2.1.5、查看運行狀態
如果在conf文件中設置了“daemonize no”的話,則運行狀態信息會在終端直接打印;
如果設置了“daemonize yes”的話,則會以守護進程形式在後台運行,log輸出位置則通過conf中的logfile設置,如:logfile /usr/local/redis/var/redis.log
2.1.6、停止redis實例
1 ./redis-cli shutdown

redis.conf文件的詳細設置可參考: http://www.linuxidc.com/Linux/2014-03/97901.htm
另外也可參考筆者分享的另一篇文章《談談Memcached與Redis》
筆者的單獨的簡易設置為:
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always

2.2、Windows安裝
Windows上的安裝、配置和Linux類似,甚至更簡單,筆者在這就不贅述了,也可以參考以下鏈接:
http://www.linuxidc.com/Linux/2011-06/37007.htm

三、與memcached的比較
memcache和redis都是內存型數據庫,數據保存在內存中,通過tcp直接存取,memcached優勢是速度快,並發高,缺點是數據類型有限,查詢功能不強,一般用作緩存。在我們團隊的項目中,一開始用的是memcached,後來用redis替代。
相比memcached:
1、redis具有持久化機制,可以定期將內存中的數據持久化到硬盤上。
2、redis具備binlog功能,可以將所有操作寫入日志,當redis出現故障,可依照binlog進行數據恢復。
3、redis支持virtual memory,可以限定內存使用大小,當數據超過阈值,則通過類似LRU的算法把內存中的最不常用數據保存到硬盤的頁面文件中。
4、redis原生支持的數據類型更多,使用的想象空間更大。
5、前面有位朋友所提及的一致性哈希,用在redis的sharding中,一般是在負載非常高需要水平擴展時使用。我們還沒有用到這方面的功能,一般的項目,單機足夠支撐並發了。redis 3.0將推出cluster,功能更加強大。
詳細的對比,可參考筆者分享的另一篇文章《談談Memcached與Redis》 http://www.linuxidc.com/Linux/2014-03/97903.htm 。

Redis 的詳細介紹:請點這裡
Redis 的下載地址:請點這裡

推薦閱讀:

Redis集群明細文檔 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis連接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安裝部署維護篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安裝Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis配置文件redis.conf 詳解 http://www.linuxidc.com/Linux/2013-11/92524.htm

Copyright © Linux教程網 All Rights Reserved