python
mysql
redis
sql
數據庫
一、官網下載:安裝包或是綠色面安裝django
二、安裝並配置環境變量windows
redis: 內存數據庫(讀寫快)、非關係型(操做數據方便、數據固定)緩存
mysql: 硬盤數據庫(數據持久化)、關係型(操做數據間關係、能夠不一樣組合)安全
大量訪問的臨時數據,纔有redis數據庫更優服務器
redis: 操做字符串、列表、字典、無序集合、有序集合 | 支持數據持久化(數據丟失能夠找回(默認持久化,主動持久化save)、能夠將數據同步給mysql) | 高併發支持
memcache: 操做字符串 | 不支持數據持久化 | 併發量小
""" 前提:前往一個方便管理redis持久化文件的邏輯再啓動服務:dump.rdb 1)前臺啓動服務 >: redis-server 2)後臺啓動服務 >: redis-server --service-start 注)Linux系統後臺啓動(或是修改配置文件,建議採用方式) >: redis-server & 3)配置文件啓動前臺服務 >: redis-server 配置文件的絕對路徑 4)配置文件啓動後臺服務 注)windows系統默認按Redis安裝包下的redis.windows-service.conf配置文件啓動 >: redis-server --service-start 注)Linux系統能夠徹底自定義配置文件(redis.conf)後臺啓動 >: redis-server 配置文件的絕對路徑 & """ """ windows系統 1)前臺啓動 i)打開終端切換到redis安裝目錄 >: cd C:\Apps\Redis ii)啓動服務 >: redis-server redis.windows.conf 2)後臺啓動 i)打開終端切換到redis安裝目錄 >: cd C:\Apps\Redis ii)啓動服務(後面的配置文件能夠省略) >: redis-server --service-start redis.windows-service.conf """
""" 1)提倡在配置文件中配置,採用配置文件啓動 requirepass 密碼 2)當服務啓動後,而且連入數據庫(redis數據庫不能輕易重啓),能夠再改當前服務的密碼(服務重啓,密碼重置) config set requirepass 新密碼 3)已連入數據庫,能夠查看當前數據庫服務密碼 config get requirepass """
""" 1)默認鏈接:-h默認127.0.0.1,-p默認6379,-n默認0,-a默認無 >: redis-cli 2)完整鏈接: >: redis-cli -h ip地址 -p 端口號 -n 數據庫編號 -a 密碼 3)先鏈接,後輸入密碼 >: redis-cli -h ip地址 -p 端口號 -n 數據庫編號 >: auth 密碼 """
在連入數據庫後執行
>: select 數據庫編號
""" 1)先鏈接數據庫,再關閉redis服務 >: redis-cli -h ip地址 -p 端口號 -n 數據庫編號 -a 密碼 >: shutdown 2)直接鏈接數據庫並關閉redis服務 >: redis-cli -h ip地址 -p 端口號 -n 數據庫編號 -a 密碼 shutdown """
鏈接數據庫執行
>: flushall
一、Redis實現數據持久化的兩種實現方式:
RDB:指定的時間間隔內保存數據快照(默認的方式)
AOF:AOF持久化方式記錄每次對服務器寫的操做,當服務器重啓的時候會從新執行這些命令來恢復原始的數據,AOF命令以redis協議追加保存每次寫的操做到文件末尾,redis還能對AOF文件進行後臺重寫,使得AOF文件的體積過大。
二、RDB與AOF優缺點
RDB:
優勢:保存數據快照,文件小,恢復快
缺點:沒法保存最近一次快照以前的數據,數據可能會丟失
AOF:
優勢:保存的數據全
缺點:AOF模式要把每一步redis命令都記錄下來,因此就致使文件的體積會很大,恢復慢
""" 1)配置文件默認配置 save 900 1 # 超過900秒有1個鍵值對操做,會自動調用save完成數據持久化 save 300 10 # 超過300秒有10個鍵值對操做,會自動調用save完成數據持久化 save 60 10000 # 超過60秒有10000個鍵值對操做,會自動調用save完成數據持久化 2)安全機制 # 當redis服務不可控宕機,會默認調用一下save完成數據持久化(若是數據量過大,也可能存在部分數據丟失) 3)主動持久化 >: save # 連入數據庫時,主動調用save完成數據持久化 注:數據持久化默認保存文件 dump.rdb,保存路徑默認爲啓動redis服務的當前路徑 """
""" 1)綁定的ip地址,多個ip用空格隔開 bind 127.0.0.1 2)端口,默認6379,通常不作修改 port 6379 3)是否以守護進程啓動,默認爲no,通常改成yes表明後臺啓動(windows系統不支持) daemonize no 4)定義日誌級別,默認值爲notice,有以下4種取值: debug(記錄大量日誌信息,適用於開發、測試階段) verbose(較多日誌信息) notice(適量日誌信息,使用於生產環境) warning(僅有部分重要、關鍵信息纔會被記錄) loglevel notice 5)配置日誌文件保持地址,默認打印在命令行終端的窗口上 若是填寫 "./redis.log" 就會在啓動redis服務的終端所在目錄下,用redis.log記錄redis日誌 logfile "" eg)終端首先切換到log文件夾所在目錄(通常就能夠採用redis的安裝目錄,也能夠自定義),再啓動reids服務 logfile "./log/redis.log" 6)數據庫個數,默認是16個,沒特殊狀況,不建議修改 databases 16 7)數據持久化 save 900 1 # 超過900秒有1個鍵值對操做,會自動調用save完成數據持久化 save 300 10 # 超過300秒有10個鍵值對操做,會自動調用save完成數據持久化 save 60 10000 # 超過60秒有10000個鍵值對操做,會自動調用save完成數據持久化 8)數據庫持久化到硬盤失敗,redis會當即中止接收用戶數據,讓用戶知道redis持久化異常,避免數據災難發生(重啓redis便可),默認爲yes,不能作修改 stop-writes-on-bgsave-error yes 9)消耗cpu來壓縮數據進行持久化,數據量小,但會消耗cpu性能,根據實際狀況能夠作調整 rdbcompression yes 10)增持cpu 10%性能銷燬來完成持久化數據的校驗,能夠取消掉 rdbchecksum yes 11)持久化存儲的文件名稱 dbfilename dump.rdb 12)持久化存儲文件的路徑,默認是啓動服務的終端所在目錄 dir ./ 13)reids數據庫密碼 requirepass 密碼 """
""" 數據操做:字符串、列表、哈希(字典)、無序集合、有序(排序)集合 有序集合:遊戲排行榜 字符串: # 設置k,v set key value # 設置k,過時時間,v setex key exp value # 經過k獲取值 get key # 批量設置k,v mset k1 v1 k2 v2 ... # 批量經過k獲取值 mget k1 k2 ... # 將key所儲存的值加上給定的增量值(increment) incrby key increment 列表: # 往右添加值(正序) rpush key value1 value2 ... # 往左添加值(反序) lpush key value1 value2 ... # 切片取值(顧頭也顧尾) lrange key start end # 索引取值 lindex key index # 從左|右踢出一個 lpop key | rpop key # 在一個值前面|後面插入一個 linsert key before|after old_value new_value 哈希: # 設置字典名 字典k 字典v hset key field value # 獲取值,字典名 字典k hget key field # 批量設置k,v hmset key field1 value1 field2 value2 ... # 批量獲取k,v hmget key field1 field2 # 經過字典名取該字典下的全部的key hkeys key # 經過字典名取該字典下的全部的value hvals key # 經過字典名,key刪除鍵值對 hdel key field 集合: # 添加集合,值 sadd key member1 member2 ... # k1 - k2 差集(去除共同的保留k1) sdiff key1 key2 ... # 將差集保存到新的名字裏 sdiffstore newkey key1 key2 ... # 交集 sinter key1 key2 ... # 並集 sunion key1 key2 ... # 查看全部的值 smembers key # 隨機刪除集合中一個值 spop key 有序集合: # 添加 集合名 值1 成員1 值2 成員2 zadd key value1 member1 value2 member2 ... # 給某一個成員對應的值加值 zincrby key value member # 查看後幾名 zrange key start end # 查看前幾名 zrevrange key start end """
pip3 install redis
import redis # decode_responses=True獲得的結果會自動解碼(不是二進制數據) r = redis.Redis(host='127.0.0.1', port=6379, db=1, password=None, decode_responses=True)
import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password=None, decode_responses=True) r = redis.Redis(connection_pool=pool)
# 1.將緩存存儲位置配置到redis中:settings.py CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100}, "DECODE_RESPONSES": True, "PASSWORD": "Admin123", } } }
# 2.操做cache模塊直接操做緩存:views.py from django.core.cache import cache # 結合配置文件實現插拔式 # 存放token,能夠直接設置過時時間 cache.set('token', 'header.payload.signature', 300) # 取出token token = cache.get('token')