wget http://download.redis.io/releases/redis-5.0.0.tar.gzjavascript
tar -zxvf redis-5.0.0.tar.gzphp
yum install gccjava
yum install gcc-c++node
makepython
cp src/redis-server /usr/bin/c++
cp src/redis-cli /usr/bin/web
bind 127.0.0.1 #對外提供連接的地址redis
port 6379 #默認端口號數據庫
daemonize no #守護進程(若是是yes後臺運行)ubuntu
databases 16 #(redis數據庫用0,1,2,3....表明)
save 900 1 #每900秒有1次增刪改操做就同步到磁盤當中
dbfilename dump.rdb #rdb備份方式的文件名字(默認開啓)
dir ./ #備份文件存放位置
appendonly no #aof備份是否開啓(默認不開啓)
appendfilename "appendonly.aof" #aof備份文件名稱
appendfsync everysec #aof同步機制,每秒同步到磁盤當中
1)啓動命令:
redis-server redis.conf
2)鏈接命令:
redis-cli -h 127.0.0.1 -p 6379
3)切換數據庫:
select 2
1)字符串
添加:set username li
刪除:del username
設置過時時間:set key value EX timeout或setex key timeout value
查看過時時間:ttl username
查看當前redis全部的key:keys *
2)列表
在列表左邊添加元素:lpush key value
在列表右邊添加元素:rpush key value
查看列表中的元素:lrange key start stop
移除並返回列表key的頭元素:lpop key
移除並返回列表的尾元素:rpop key
指定返回第幾個元素:lindex key index
獲取列表中的元素個數:llen key
刪除指定的元素:lrem key count value count指定刪除個數
3)集合
添加元素:sadd lan php java python
查看元素:smembers lan
移除元素:srem lan php
查看集合中的元素個數:scard lan
獲取多個集合的交集:sinter team1 team2
獲取多個集合的並集:sunion team1 team2
獲取多個集合的差集:sdiff team1 team2 以左邊的集合爲標準
4)哈希
添加一個新值:hset website baidu baidu.com
獲取哈希中的field對應的值:hget website baidu
刪除field中的某個field:hdel website baidu
獲取某個哈希中全部的field和value:hgetall website
獲取某個哈希中全部的field:hkeys website
獲取某個哈希中全部的值:hvals website
判斷哈希中是否存在某個field:hexists website baidu
獲取哈希中總共的鍵值對:hlen website
Redis事務能夠一次執行多個命令,事務具備如下特徵:
隔離性:事務中的全部命令都會序列化、按順序地執行,不會被其餘命令打擾。
原子性:事務中的命令要麼所有被執行,要麼所有都不執行。
開啓一個事務:multi
提交事務:exec
回滾事務:discard
發佈消息:publish channel message
訂閱頻道:subscribe chanel
rdb與aof區別
1)安裝python-redis:
pip install redis
2)新建一個文件好比redis_test.py,而後初始化一個redis實例變量,而且在ubuntu虛擬機中開啓redis。好比虛擬機的ip地址爲192.168.52.233。示例代碼以下:
從redis包中導入Redis類
from redis import Redis
初始化redis實例變量
xtredis = Redis(host='192.168.52.233',port=6379)
3)對字符串的操做
操做redis的方法名稱,跟以前使用redis-cli同樣。
添加一個值進去,而且設置過時時間爲60秒,若是不設置,則永遠不會過時
xtredis.set('username','xiaotuo',ex=60)
獲取一個值
xtredis.get('username')
刪除一個值
xtredis.delete('username')
4)對列表的操做
同字符串操做,全部方法的名稱跟使用redis-cli操做是同樣的:
給languages這個列表往左邊添加一個python
xtredis.lpush('languages','python')
給languages這個列表往左邊添加一個php
xtredis.lpush('languages','php')
獲取languages這個列表中的全部值
print xtredis.lrange('languages',0,-1)
> ['javascript','php','python']
5)對集合的操做
給集合team添加一個元素xiaotuo
xtredis.sadd('team','xiaotuo')
給集合team添加一個元素datuo
xtredis.sadd('team','datuo')
給集合team添加一個元素slice
xtredis.sadd('team','slice')
獲取集合中的全部元素
xtredis.smembers('team')
> ['datuo','xiaotuo','slice'] # 無序的
6)對哈希(hash)的操做:
給website這個哈希中添加baidu
xtredis.hset('website','baidu','baidu.com')
給website這個哈希中添加google
xtredis.hset('website','google','google.com')
獲取website這個哈希中的全部值
print xtredis.hgetall('website')
> {"baidu":"baidu.com","google":"google.com"}
7)事務(管道)操做
redis支持事務操做,也即一些操做只有統一完成,才能算完成。不然都執行失敗。
定義一個管道實例
pip = xtredis.pipeline()
pip.set('username', 'litong')
pip.set('school', 'qinghua')
pip.execute()
8)訂閱與發佈操做
訂閱
from redis import Redis
ps = xtredis.pubsub()
ps.subscribe('email')
while True:
for item in ps.listen():
if item['type'] == 'message':
data = item.get('data')
print(data.decode('utf-8'))
發佈
from redis import Redis
xtredis = Redis(host='192.168.254.41', port=6379)
xtredis.publish('email', 'xxx@qq.com')
1)拷貝一份redis配置並命名爲slave.conf
cp redis.conf slave.conf
2)編輯配置文件
bind 192.168.52.233
slaveof 192.168.52.233 6379
port 6380
1)建立6個配置文件
touch{7001..7006}.conf
2)編輯配置文件
每一個配置文件需修改端口、進程文件名、集羣配置文件名
port 7001 #綁定端口
bind 192.168.52.233 #綁定對外鏈接提供的ip
daemonize yes #開啓守護進程
pidfile 7001.pid #進程文件名
cluster-enabled yes #是不是集羣
cluster-config-file 7001_node.conf #集羣配置文件
cluster-node-timeout 15000 #集羣鏈接超時時間(15000ms)
appendonly yes #數據持久化類型
3)執行配置文件
redis-server 7001.conf
redis-server 7002.conf
redis-server 7003.conf
redis-server 7004.conf
redis-server 7005.conf
redis-server 7006.conf
4)初始化
redis-cli --cluster create 192.168.52.233:7001 192.168.52.233:7002 192.168.52.233:7003 192.168.52.233:7004 192.168.52.233:7005 192.168.52.233:7006 --cluster-replicas 1 (數字1表示每一個主節點對應一個從節點)
5)進入數據庫驗證
redis-cli -c -h 192.168.52.233 -p 7001
redis-cli -c -h 192.168.52.233 -p 7002
redis-cli -c -h 192.168.52.233 -p 7003