1. 程式人生 > >redis知識點與Python的互動

redis知識點與Python的互動

NoSQL簡介

  • NoSQL,全名為Not Only SQL,指的是非關係型的資料庫
  • 隨著訪問量的上升,網站的資料庫效能出現了問題,於是nosql被設計出來

優點/缺點

  • 優點:
    • 高可擴充套件性
    • 分散式計算
    • 低成本
    • 架構的靈活性,半結構化資料
    • 沒有複雜的關係
  • 缺點:
    • 沒有標準化
    • 有限的查詢功能(到目前為止)
    • 最終一致是不直觀的程式

分類

型別部分代表特點
列儲存

Hbase

Cassandra

Hypertable

顧名思義,是按列儲存資料的。最大的特點是方便儲存結構化和半結構化資料,方便做資料壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢。

文件儲存

MongoDB

CouchDB

文件儲存一般用類似json的格式儲存,儲存的內容是文件型的。這樣也就有有機會對某些欄位建立索引,實現關係資料庫的某些功能。

key-value儲存

Tokyo Cabinet / Tyrant

Berkeley DB

MemcacheDB

Redis

可以通過key快速查詢到其value。一般來說,儲存不管value的格式,照單全收。(Redis包含了其他功能)

圖儲存

Neo4J

FlockDB

圖形關係的最佳儲存。使用傳統關係資料庫來解決的話效能低下,而且設計使用不方便。

物件儲存

db4o

Versant

通過類似面嚮物件語言的語法操作資料庫,通過物件的方式存取資料。

xml資料庫

Berkeley DB XML

BaseX

高效的儲存XML資料,並支援XML的內部查詢語法,比如XQuery,Xpath。


安裝

tar zxvf redis-3.2.5.tar.gz
  • 複製:推薦放到usr/local目錄下
sudo mv -r redis-3.2.3/* /usr/local/redis/
進入redis目錄
cd /usr/local/redis/
  • 生成
sudo make
  • 測試
sudo make test
這段執行時間會較長
  • 安裝:將redis的命令安裝到/usr/bin/目錄
sudo make install

執行

  • 啟動伺服器:在桌面目錄
redis-server
按ctrl+c停止
  • 啟動客戶端:在新終端中執行如下程式碼
redis-cli
  • 執行命令
ping
set 'a' '123'
  • 當新增鍵值後,發現在當前執行的目錄下,建立了一個檔案:dump.rdb,這個檔案用於將資料持久化儲存

基本配置

  • 在原始檔/usr/local/redis目錄下,檔案redis.conf為配置檔案
  • 繫結地址:如果需要遠端訪問,可將此行註釋
bind 127.0.0.1
  • 埠,預設為6379
port 6379
  • 是否以守護程序執行
    • 如果以守護程序執行,則不會在命令列阻塞,類似於服務
    • 如果以非守護程序執行,則當前終端被阻塞,無法使用
    • 推薦改為yes,以守護程序執行
daemonize no|yes
  • 資料檔案
dbfilename dump.rdb
  • 資料檔案儲存路徑
dir的預設值為./,表示當前目錄
推薦改為:dir /var/lib/redis

使用配置檔案方式啟動

  • 直接執行redis-server會直接執行,阻塞當前終端
  • 一般配置檔案都放在/etc/目錄下
sudo cp /usr/local/redis/redis.conf /etc/redis/
  • 推薦指定配置檔案啟動
sudo redis-server /etc/redis/redis.conf
  • 停止redis服務
ps ajx|grep redis
sudo kill -9 redis的程序id

資料操作

  • redis是key-value的資料,所以每個資料都是一個鍵值對
  • 鍵的型別是字串
  • 值的型別分為五種:

    • 字串string
    • 雜湊hash
    • 列表list
    • 集合set
    • 有序集合zset
  • 資料操作的全部命令,可以檢視中文網站

  • 接下來逐個介紹操作各型別的命令

string

  • string是redis最基本的型別
  • 最大能儲存512MB資料
  • string型別是二進位制安全的,即可以為任何資料,比如數字、圖片、序列化物件等

命令

設定

  • 設定鍵值
set key value
  • 設定鍵值及過期時間,以秒為單位
SETEX key seconds value
  • 設定多個鍵值
MSET key value [key value ...]

獲取

  • 根據鍵獲取值,如果不存在此鍵則返回nil
GET key
  • 根據多個鍵獲取多個值
MGET key [key ...]

運算

  • 要求:值是數字
  • 將key對應的value加1
INCR key
  • 將key對應的value加整數
INCRBY key increment
  • 將key對應的value減1
DECR key
  • 將key對應的value減整數