Redis數(shù)據(jù)庫(kù)

一衙荐、安裝

pip install django-redis

背景和意義

服務(wù)器數(shù)據(jù)非經(jīng)常更新荆陆。若每次都從硬盤(pán)讀取一次篮愉,浪費(fèi)服務(wù)器資源腐芍、拖慢響應(yīng)速度。而且數(shù)據(jù)更新頻率較高,服務(wù)器負(fù)擔(dān)比較大夜赵。若保存到數(shù)據(jù)庫(kù)晕粪,還需要額外建立一張對(duì)應(yīng)的表存儲(chǔ)數(shù)據(jù)。在Django中建立表通常做法是建立一個(gè)模型泣刹。看似簡(jiǎn)單犀被,問(wèn)題調(diào)試麻煩椅您、開(kāi)發(fā)時(shí)長(zhǎng)久。為了進(jìn)行服務(wù)器的加速寡键,使用Redis進(jìn)行緩存掀泳。

配置步驟如下

1,服務(wù)器端安裝redis

(1)在Windows安裝redis西轩,方便測(cè)試

Redis不支持Windows员舵!在它官網(wǎng)寫(xiě)得很清楚。但是開(kāi)發(fā)環(huán)境一般是Windows系統(tǒng)藕畔。為了方便開(kāi)發(fā)和調(diào)試马僻,需要在Windows中安裝Redis。微軟自己弄了Redis的Windows版本注服。打開(kāi)https://github.com/MSOpenTech/redis/releases下載msi安裝包韭邓。該版本是64位。安裝msi過(guò)程中溶弟,有個(gè)選項(xiàng)是否加入系統(tǒng)環(huán)境變量女淑,記得勾上。一路下一步可很,安裝诗力。完成之后打開(kāi)cmd,輸入redis-server命令查看是否可以使用我抠。不可以則重啟一下即可苇本。直接輸入redis-server命令使用的配置文件是安裝目錄下的redis.windows.conf文件。

若提示錯(cuò)誤 “ConnectionError: Error 10061 connecting to None:6379”菜拓,可以如下操作瓣窄,打開(kāi)cmd輸入如下命令:

redis-cli????shutdown

再執(zhí)行redis-server即可。

(2)在ubuntu下安裝纳鼎,針對(duì)部署

sudo apt-get????install redis-server

安裝完成后俺夕,Redis服務(wù)器會(huì)自動(dòng)啟動(dòng)裳凸,我們檢查Redis服務(wù)器程序

root@VM-60-191-ubuntu:~# ps -aux|grep redis

redis????30543 ????0.1????0.7????37228????6724?? ? ?????Ssl????14:03????0:00????/usr/bin/redis-? ?????????????????server127.0.0.1:6379

root? ? ? 30660????0.0????0.1????11288? ? ?924? pts/1????S+????14:04????0:00????grep--color=au? ? ? ? ? ? ? ? ? to redis


查看運(yùn)行狀態(tài)

root@VM-60-191-ubuntu:~# sudo /etc/init.d/redis-server status

* redis-server.service - Advanced key-valuestore?

????Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)? Active: active (running) since Mon2018-03-2614:03:03CST;3min1s ago? ?

????????Docs:http://redis.io/documentation,? ? ? ? ?

????????????????man:redis-server(1)

????Main PID:30543(redis-server)?

????????CGroup: /system.slice/redis-server.service? ? ? ? ? `

????????????????????-30543/usr/bin/redis-server127.0.0.1:6379

Mar2614:03:03VM-60-191-ubuntu systemd[1]: Starting Advanced key-valuestore...

Mar2614:03:03VM-60-191-ubuntu run-parts[30533]: run-parts: executing /etc/redis/redis-server....le

Mar2614:03:03VM-60-191-ubuntu run-parts[30544]: run-parts: executing /etc/redis/redis-server....le

Mar2614:03:03VM-60-191-ubuntu systemd[1]: Started Advanced key-valuestore.

Hint: Somelineswere ellipsized, use -ltoshowinfull.

通過(guò)命令行客戶(hù)端訪問(wèn)

root@VM-60-191-ubuntu:~# redis-cli

#查看幫助

127.0.0.1:6379> help? ?

redis-cli3.0.6

Type:"help @<group>" to get a list of commands in

"help <command>" for help on

"help <tab>" to get a list of possible help topics

"quit" to exit

#設(shè)置k-v記錄

127.0.0.1:6379> set key1 "helloword"

OK

#根據(jù)鍵查找記錄

127.0.0.1:6379>get key1 "helloword"

#展示所有的鍵

127.0.0.1:6379>keys *

1)"key1"

#刪除鍵

127.0.0.1:6379> del key1

(integer) 1

127.0.0.1:6379>keys *

(empty list or set)

2,Redis訪問(wèn)控制

默認(rèn)情況下劝贸,訪問(wèn)Redis服務(wù)器是不需要密碼的姨谷,為了讓其他服務(wù)器使用同時(shí)增加安全性我們需要設(shè)置Redis服務(wù)器的訪問(wèn)密碼。設(shè)置訪問(wèn)密碼為yourpassword映九。

由于redis默認(rèn)綁定本機(jī)的梦湘,所以第一步取消該設(shè)置:

sudo vim /etc/redis/redis.conf

用vim打開(kāi)該配置文件,然后注釋掉下面這行:

#bind 127.0.0.1

然后設(shè)置登密碼件甥,用vim打開(kāi)配置文件捌议,配置文件較長(zhǎng),命令模式下輸入/requirepass foobared快速搜索該配置項(xiàng):

#編輯配置文件

sudo vim /etc/redis/redis.conf

#找到下面這一行并去除注釋?zhuān)梢运阉鱮equirepass)我的 是396行

#requirepass foobared 未修改之前

#修改之后

requirepass 123456789? ? #假設(shè) 123456789 是我的redis密碼

修改后重啟服務(wù)器使配置生效:

root@VM-60-191-ubuntu:~# sudo /etc/init.d/redis-server restart

[ ok ]? Restarting redis-server(via systemctl): redis-server.service.

此時(shí)在登錄redis,權(quán)限被控制

root@VM-60-191-ubuntu:~# redis-cli

127.0.0.1:6379>keys *

(error)NOAUTH Authentication required.

用密碼登錄引有,具有權(quán)限

root@VM-60-191-ubuntu:~# redis-cli -a 941020

127.0.0.1:6379>keys *

1)"key2"

通過(guò)以下命令從另一臺(tái)linux服務(wù)器訪問(wèn)redis,password替換為你的密碼瓣颅,host替換為要訪問(wèn)的服務(wù)器

redis-cli? -a? password? -h? host? ip

數(shù)據(jù)庫(kù)的數(shù)量是可以配置的,不知道數(shù)據(jù)庫(kù)就是數(shù)據(jù)庫(kù)0譬正,默認(rèn)情況下是16個(gè)宫补。修改redis.conf下的databases指令:

databases 64

3,安裝django-redis和settings配置

pip? install? django-redis

settings.py中加入以下內(nèi)容,your_host_ip換成你的服務(wù)器地址,yoursecret換成你的服務(wù)器密碼

# 設(shè)置django中CACHE默認(rèn)的保存位置
?CACHES =?{ ???
????????????????"default": { ???????
? ? ? ? ? ? ? ? ? ? ? ? ????"BACKEND": "django_redis.cache.RedisCache", ???????
?????????????????????????????????# 設(shè)置為redis所在, 以及所用庫(kù)序列 ???????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"LOCATION": "redis://127.0.0.1:6379/0", ???????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"OPTIONS": { ???????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"CLIENT_CLASS": "django_redis.client.DefaultClient", ???????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ???
? ? ? ? ? ? ? ? ? ? ? ? ? }, ???
????????????????"session": { # 會(huì)話集 ???????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "BACKEND": "django_redis.cache.RedisCache", ???????????
?????????????????????????????????# 設(shè)置為redis所在, 以及所用庫(kù)序列 ???????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"LOCATI ON": "redis://127.0.0.1:6379/1",? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"OPTIONS": {? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "CLIENT_CLASS": "django_redis.client.DefaultClient", ???????????
?????????????????????????????????} ???????
?????????????????????}
?} ?

?# 設(shè)置session保存在cache中导帝,就是數(shù)據(jù)庫(kù)存儲(chǔ)改為redis存儲(chǔ)
?SESSION_ENGINE = "django.contrib.sessions.backends.cache"
?# SESSION_CACHE_ALIAS = "default"
?# 設(shè)置保存到1號(hào)庫(kù)守谓,即session庫(kù)
?SESSION_CACHE_ALIAS = "session"?

cache中的是必須的,下面三條可有可無(wú)

4您单,測(cè)試緩存是否成功

本步驟非必須,只是為了測(cè)試看可否正常使用redis荞雏。

進(jìn)入django的后臺(tái)命令模式:

python? manage.py? shell

逐條輸入如下命令測(cè)試:

from????django.core.cache????import cache????#引入緩存模塊

cache.set('v','555',60*60)????#寫(xiě)入key為v虐秦,值為555的緩存,有效期30分鐘

cache.has_key('v')????????#判斷key為v是否存在

cache.get('v')????????#獲取key為v的緩存

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凤优,一起剝皮案震驚了整個(gè)濱河市悦陋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筑辨,老刑警劉巖俺驶,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棍辕,居然都是意外死亡暮现,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)楚昭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)栖袋,“玉大人,你說(shuō)我怎么就攤上這事抚太√练” “怎么了昔案?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)电媳。 經(jīng)常有香客問(wèn)我踏揣,道長(zhǎng),這世上最難降的妖魔是什么匾乓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任呼伸,我火速辦了婚禮,結(jié)果婚禮上钝尸,老公的妹妹穿的比我還像新娘括享。我一直安慰自己,他們只是感情好珍促,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布铃辖。 她就那樣靜靜地躺著,像睡著了一般猪叙。 火紅的嫁衣襯著肌膚如雪娇斩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天穴翩,我揣著相機(jī)與錄音犬第,去河邊找鬼。 笑死芒帕,一個(gè)胖子當(dāng)著我的面吹牛歉嗓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播背蟆,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鉴分,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了带膀?” 一聲冷哼從身側(cè)響起志珍,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垛叨,沒(méi)想到半個(gè)月后伦糯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗽元,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年敛纲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片还棱。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡载慈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出珍手,到底是詐尸還是另有隱情办铡,我是刑警寧澤辞做,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站寡具,受9級(jí)特大地震影響秤茅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜童叠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一框喳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厦坛,春花似錦五垮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至撬碟,卻和暖如春诞挨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呢蛤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工惶傻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人其障。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓银室,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親静秆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粮揉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351