redis知識點與Python的互動
阿新 • • 發佈:2019-01-17
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。 |
安裝
- 下載:開啟redis官方網站,推薦下載穩定版本(stable)
- 解壓
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減整數