redis非關係型數據庫

1.redis安裝:

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

 

2.配置文件參數:

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同步機制,每秒同步到磁盤當中

 

3.數據庫命令

1)啓動命令:

redis-server redis.conf

 

2)鏈接命令:

redis-cli -h 127.0.0.1 -p 6379

 

3)切換數據庫:

select 2

 

 

4.數據庫操做

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

 

 

5.事務操做

Redis事務能夠一次執行多個命令,事務具備如下特徵:

隔離性:事務中的全部命令都會序列化、按順序地執行,不會被其餘命令打擾。

原子性:事務中的命令要麼所有被執行,要麼所有都不執行。

開啓一個事務:multi

提交事務:exec

回滾事務:discard

 

6.發佈/訂閱

發佈消息:publish channel message

訂閱頻道:subscribe chanel

 

7.持久化

rdb與aof區別

 

 

 

8.python鏈接redis

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')

 

9.redis主從

1)拷貝一份redis配置並命名爲slave.conf

cp redis.conf slave.conf

 

2)編輯配置文件

bind 192.168.52.233

slaveof 192.168.52.233 6379

port 6380

 

10.redis集羣(5.0版本)

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

相關文章
相關標籤/搜索