Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。python
Redis是一個key-value存儲系統。和Memcached相似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。在此基礎上,redis支持各類不一樣方式的排序。與memcached同樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。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
$ sudo pip install redis or $ sudo easy_install redis or from source $ sudo python setup.py install
>>> 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']