Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
Redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(雜湊類型)。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是緩衝在記憶體中。區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。 Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關聯式資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等用戶端,使用很方便。 Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了發布/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息發布記錄。同步對讀取操作的可擴充性和資料冗餘很有協助。 1.Redis安裝
$ wget http://download.redis.io/releases/redis-3.0.3.tar.gz$ tar xzf redis-3.0.3.tar.gz$ cd redis-3.0.3$ make
$ src/redis-server# 開啟服務,預設連接埠號碼:6379
2.Package安裝
$ sudo pip install redisor$ sudo easy_install redisor from source$ sudo python setup.py install
3.使用
>>> import redis>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)>>> r.set('foo', 'bar')True>>> r.get('foo')'bar'
管道(pipeline)是redis在提供單個請求中緩衝多條伺服器命令的基類的子類。它通過減少伺服器-用戶端之間反覆的TCP資料庫包,從而大大提高了執行批量命令的功能。
>>> p.set('hello','redis').p.sadd('faz','baz').incr('num').execute()
當有大量類型文檔的對象,文檔的內容都不一樣時,(即“表”沒有固定的列),可以使用hash來表達。
>>> r.hset('users:jdoe', 'name', "John Doe")1L>>> r.hset('users:jdoe', 'email', 'John@test.com')1L>>> r.hset('users:jdoe', 'phone', '1555313940')1L>>> r.hincrby('users:jdoe', 'visits', 1)1L>>> r.hgetall('users:jdoe'){'phone': '1555313940', 'name': 'John Doe', 'visits': '1', 'email': 'John@test.com'}>>> r.hkeys('users:jdoe')['name', 'email', 'phone', 'visits']