數據庫之redis篇(3)—— Python操做redis

雖然前面兩篇已經說了redis的一些配置安裝什麼的,篇幅有點長,可能看完了也不知道怎麼操做,這裏再濃縮一下:mysql

什麼是redis

redis徹底開源免費的,遵照BSD協議,是一個高性能的非關係型key-value數據庫,redis

redis特色:

  • redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用,相比memcache,redis能夠持久化存儲,這是memcache沒有的。
  • redis支持五種數據類型。
  • redis支持數據庫備份。

redis優點:

  • redis性能極高,讀的速度是110000次/s,寫的速度是81000次/s。
  • redis支持數據類型:String,Lists,Hashes,Sets以及Ordered Sets。
  • redis的全部操做都是原子性的,多個操做支持事物,即MULTI和EXEC指令包起來,可是多個事物來講不是原子性的,mysql的多個事物是原子性的。
  • redis支持publish/subscribe,通知,key過時等等特性。

redis 配置

能夠經過redis-cli 進入交互模式,使用config命令查看或設置配置項。也能夠進入配置文件用vim編輯器進行修改sql

 

redis簡單使用

啓動服務端:數據庫

啓動客戶端,keys * 查看當前數據庫裏存儲的key-valuedjango

 

查看數據:lrange key名 0 -1vim

 

 

Python操做redis

安裝redis庫

 

鏈接redis,基本操做 

先看redis的源碼,實例化Redis對象時,提供瞭如下的參數app

 

鏈接並添加數據編輯器

鏈接時根據當前的開發環境來設置參數,我這裏的是127.0.0.1,端口就是6379,密碼爲空,由上面的源碼得知,Redis默認就是這些參數,因此我只設置host就好了。自行根據本身的開發環境設置參數性能

set方法是兩個參數,分別是key-value,hset是三個參數,第一個是數據庫的key值,第二個和第三個是字典的key和valuespa

在運行以前數據庫的數據有這些:

 

運行,而後在終端查看:

 

 

 查詢,利用get和hget獲取值

發現值是bytes格式,在鏈接的時候能夠加個參數讓取出來的值都是字符串:decode_responses=True

 

剛纔的hset是能夠再value那一層加個字典,若是還想套一層,能夠用hmset:

 

取值,用hmget取出來是一個列表形式,內容時改字典的value值,hgetall就是所有拿出來了

 

redis鏈接池

使用connectionpool來管理對一個redis server的全部鏈接,避免每次創建、釋放鏈接的資源開銷。默認,每一個Redis實例都會維護一個本身的鏈接池。能夠直接創建一個鏈接池,而後做爲參數傳給Redis實例,這樣就能夠實現多個Redis實例共享一個鏈接池

以下,後面的操做其實都是同樣的了

 

 固然你能夠用max_connections設置最大鏈接數:

 

發佈者訂閱者模型

發佈者:

 

 

訂閱者:

 

 

 

先啓動多個訂閱者:

 

 

啓動發佈者:

 

訂閱者返回結果:
三個sub訂閱者返回的結果都是以下:

 

那麼這parse_response究竟是什麼呢,打印看看,在未接受到數據以前,它默認是1,接收到數據以後就是接收的數據

 

 

有沒有發現其實比mysql還簡單不少

 

 

經常使用方法:

set(name, value, ex=None, px=None, nx=False, xx=False)
#在Redis中設置值,默認是不存在則建立,存在則修改
參數:
ex,過時時間(秒)過時後值None
px,過時時間(毫秒)
nx,若是設置爲True,則只有name不存在時,當前set操做才執行
xx,若是設置爲True,則只有name存在時,當前set操做才執行

# 注:ex,px,nx,xx能夠跟在命令後面 eg: setnx 表示只能建立 hash命令同樣適用

get(key)  獲取key的值

mset(*args, **kwargs)  批量設置值

mget(key, *args)

hset(name, key, value)  增長單個 不存在則建立

hget(name, key)  獲取單個

hmset(name, mapping)  批量增長 mapping爲字典

hgetall(name) 獲取name對應hash的全部鍵值

hlen(name)  獲取name對應的hash中鍵值對的個數

hkeys(name)  獲取name對應的hash中全部的key的值

hvals(name)  獲取name對應的hash中全部的value的值

hexists(name, key)  檢查name對應的hash是否存在當前傳入的key

hdel(name,*keys)   將name對應的hash中指定key的鍵值對刪除

hscan_iter(name, match=None, count=None)  利用yield封裝hscan建立生成器,實現分批去redis中獲取數據
參數:
match,匹配指定key,默認None 表示全部的key
count,每次分片最少獲取個數,默認None表示採用Redis的默認分片個數
lpush(name,values)  在name對應的list中左邊添加元素 沒有就新建

llen(name) 獲取name對應的列表長度

lrang(name, index1, index2)按照index切片取出name對應列表裏值

lpushx(name, value)  只能添加不能新建

linsert(name, where, refvalue, value))  在name對應的列表的某一個值前或後插入一個新值
參數:
name,redis的name
where,BEFORE或AFTER
refvalue,標杆值,即:在它先後插入數據
value,要插入的數據 

lset(name, index, value)  給指定索引修改值

lrem(name, value, num)  在name對應的list中刪除指定的值

參數:
name,redis的name
value,要刪除的值
num, num=0,刪除列表中全部的指定值;
num=2,從前到後,刪除2個; num=1,從前到後,刪除左邊第1個
num=-2,從後向前,刪除2個

lindex(name, index)  在name對應的列表中根據索引獲取列表元素

 

 

固然redis還有支持django的數據庫模塊,pip install django-redis便可

相關文章
相關標籤/搜索