Redis安裝步驟 - linux系統(tǒng)下
https://blog.csdn.net/lzj3462144/article/details/70973368
http://www.rzrgm.cn/pyyu/p/9467279.html
http://www.rzrgm.cn/xyinjie/p/9444280.html
https://blog.csdn.net/xiaofei_hah0000/article/details/52214592 安裝 jemalloc 文件 ,(解決make 編譯報(bào)錯(cuò)問(wèn)題.)
https://blog.csdn.net/lgh1117/article/details/48270085,(解決make 編譯報(bào)錯(cuò)問(wèn)題.)
一、直接安裝
1. 安裝redis
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo. #阿里云的源
yum install redis
另外要提前裝上wget yum -y install wget
2. 關(guān)閉防火墻
systemctl stop iptables.service (7.0以上用這個(gè)命令)
service iptables stop
iptables -F #清空防火墻規(guī)則
seteforce 1 臨時(shí)關(guān)閉,重啟后會(huì)生效
vi /etc/selinux/config 長(zhǎng)期關(guān)閉方式
SELINUX=disabled
這里有兩個(gè)選項(xiàng)
permissive - 開(kāi)啟
disabled - 關(guān)閉
3. 修改配置文件
vim /etc/redis.conf
4. 啟動(dòng)
redis-resver redis.conf
關(guān)閉命令
redis-cli shutdown
二 、編譯安裝
1.下載redis源碼 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解壓縮 tar -zxf redis-4.0.10.tar.gz 3.切換redis源碼目錄 cd redis-4.0.10.tar.gz 4.編譯源文件 make
編譯make的時(shí)候會(huì)報(bào)錯(cuò) :
解決辦法:
1.安裝gcc (不能解決)
2.通過(guò)命令 :make MALLOC=libc (替代make命令)
http://www.rzrgm.cn/xyinjie/p/9444280.html
5.編譯好后,src/目錄下有編譯好的redis指令 6.make install 安裝到指定目錄,默認(rèn)在/usr/local/bin
7. 或者安裝在自己希望的目錄下 :
mkdir /usr/local/redis
8. 在 cd redis-4.0.10/ 目錄下:
make PREFIX=/usr/local/redis install
即將redis安裝到了 usr/local/redis

9 .修改redis.conf文件
[root@VM_0_2_centos bin]# find / -name redis.conf
/root/redis-4.0.10/redis.conf
[root@VM_0_2_centos bin]#

1. 下載redis源碼
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2. 解壓縮
tar -zxf redis-4.0.10.tar.gz
3. 進(jìn)入redis 源碼目錄
cd redis-4.0.10.tar.gz
4. 編譯源文件 并進(jìn)行安裝
make && make install
5. 啟動(dòng) redis 服務(wù)
service iptables stop
6. 使用redis客戶端
./redis-cli
7.測(cè)試 連接性
127.0.0.1:6379 > ping
8. 成功:
返回 pong
9 .編輯config文件
vi redis.conf


redis-4.0文件存放路徑

redis 安裝目錄

9 后臺(tái)運(yùn)行redis 服務(wù)器命令
[root@VM_0_2_centos bin]# ./redis-server /root/redis-4.0.10/redis.conf 后臺(tái)運(yùn)行的命令
18538:C 21 Nov 19:20:01.236 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
18538:C 21 Nov 19:20:01.236 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=18538, just started
18538:C 21 Nov 19:20:01.236 # Configuration loaded
9 . 后臺(tái)運(yùn)行服務(wù)器
redis-server /opt/redis-4.0.10/redis.conf
10 查看 redis運(yùn)行狀態(tài).
ps -ef|grep redis

11.關(guān)閉redis的后臺(tái)運(yùn)行
kill 5653
測(cè)試連接是否成功
pycharm終端能夠輸出mengbin 如下測(cè)試的
1. 連接redis
import redis
conn = redis.Redis(host="192.168.11.98",port=6379)
#################################字符串操作########################################
import redis
conn = redis.Redis(host="192.168.11.98",port=6379)
#1.設(shè)置值
conn.set('mengbin_name',"mengbin")
#獲取值
val = conn.get("mengbin_name").decode("utf-8")
print(val) #輸出:mengbin
#################################字典操作(hset)########################################
"""
{
xx:{
k1:"",
k2:"",
}
}
"""
conn.hset("xx1","k1","孟賓")
conn.hset("xx1","k2","武sir")
n1 =conn.hget("xx1","k1").decode("utf-8")
n2 =conn.hget("xx1","k2").decode("utf-8")
print(n1,n2)
輸出結(jié)果:孟賓 武sir
1.Redis 五大數(shù)據(jù)類(lèi)型 (字符串 , 列表 , 集合 , 有序集合, 字典 )
{
name1:"于超",#"字符串"
name2:[11,22,33,], #"列表"
name3:{11,22,33}, #集合
name4:{("alex",90),"oldboy",19}, #"有序集合"
name5:{
name:"于超",
age:18,
}#字典
}
http://www.rzrgm.cn/wupeiqi/articles/5132791.html
redis介紹:
Redis
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類(lèi)似,它支持存儲(chǔ)的value類(lèi)型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類(lèi)型)。這些數(shù)據(jù)類(lèi)型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
1. 使用Redis有哪些好處?
(1) 速度快,因?yàn)閿?shù)據(jù)存在內(nèi)存中,類(lèi)似于HashMap,HashMap的優(yōu)勢(shì)就是查找和操作的時(shí)間復(fù)雜度都是O(1)
(2) 支持豐富數(shù)據(jù)類(lèi)型,支持string,list,set,sorted set,hash
(3) 支持事務(wù),操作都是原子性,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行
(4) 豐富的特性:可用于緩存,消息,按key設(shè)置過(guò)期時(shí)間,過(guò)期后將會(huì)自動(dòng)刪除
2. redis相比memcached有哪些優(yōu)勢(shì)?
(1) memcached所有的值均是簡(jiǎn)單的字符串,redis作為其替代者,支持更為豐富的數(shù)據(jù)類(lèi)型
(2) redis的速度比memcached快很多
(3) redis可以持久化其數(shù)據(jù)
3. redis常見(jiàn)性能問(wèn)題和解決方案:
(1) Master最好不要做任何持久化工作,如RDB內(nèi)存快照和AOF日志文件
(2) 如果數(shù)據(jù)比較重要,某個(gè)Slave開(kāi)啟AOF備份數(shù)據(jù),策略設(shè)置為每秒同步一次
(3) 為了主從復(fù)制的速度和連接的穩(wěn)定性,Master和Slave最好在同一個(gè)局域網(wǎng)內(nèi)
(4) 盡量避免在壓力很大的主庫(kù)上增加從庫(kù)
(5) 主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即:Master <- Slave1 <- Slave2 <- Slave3...
這樣的結(jié)構(gòu)方便解決單點(diǎn)故障問(wèn)題,實(shí)現(xiàn)Slave對(duì)Master的替換。如果Master掛了,可以立刻啟用Slave1做Master,其他不變。
4. MySQL里有2000w數(shù)據(jù),redis中只存20w的數(shù)據(jù),如何保證redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)
相關(guān)知識(shí):redis 內(nèi)存數(shù)據(jù)集大小上升到一定大小的時(shí)候,就會(huì)施行數(shù)據(jù)淘汰策略。redis 提供 6種數(shù)據(jù)淘汰策略:
voltile-lru:從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.db[i].expires)中挑選最近最少使用的數(shù)據(jù)淘汰
volatile-ttl:從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.db[i].expires)中挑選將要過(guò)期的數(shù)據(jù)淘汰
volatile-random:從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.db[i].expires)中任意選擇數(shù)據(jù)淘汰
allkeys-lru:從數(shù)據(jù)集(server.db[i].dict)中挑選最近最少使用的數(shù)據(jù)淘汰
allkeys-random:從數(shù)據(jù)集(server.db[i].dict)中任意選擇數(shù)據(jù)淘汰
no-enviction(驅(qū)逐):禁止驅(qū)逐數(shù)據(jù)
5. Memcache與Redis的區(qū)別都有哪些?
1)、存儲(chǔ)方式
Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會(huì)掛掉,數(shù)據(jù)不能超過(guò)內(nèi)存大小。
Redis有部份存在硬盤(pán)上,這樣能保證數(shù)據(jù)的持久性。
2)、數(shù)據(jù)支持類(lèi)型
Memcache對(duì)數(shù)據(jù)類(lèi)型支持相對(duì)簡(jiǎn)單。
Redis有復(fù)雜的數(shù)據(jù)類(lèi)型。
3),value大小
redis最大可以達(dá)到1GB,而memcache只有1MB
6. Redis 常見(jiàn)的性能問(wèn)題都有哪些?如何解決?
1).Master寫(xiě)內(nèi)存快照,save命令調(diào)度rdbSave函數(shù),會(huì)阻塞主線程的工作,當(dāng)快照比較大時(shí)對(duì)性能影響是非常大的,會(huì)間斷性暫停服務(wù),所以Master最好不要寫(xiě)內(nèi)存快照。
2).Master AOF持久化,如果不重寫(xiě)AOF文件,這個(gè)持久化方式對(duì)性能的影響是最小的,但是AOF文件會(huì)不斷增大,AOF文件過(guò)大會(huì)影響Master重啟的恢復(fù)速度。Master最好不要做任何持久化工作,包括內(nèi)存快照和AOF日志文件,特別是不要啟用內(nèi)存快照做持久化,如果數(shù)據(jù)比較關(guān)鍵,某個(gè)Slave開(kāi)啟AOF備份數(shù)據(jù),策略為每秒同步一次。
3).Master調(diào)用BGREWRITEAOF重寫(xiě)AOF文件,AOF在重寫(xiě)的時(shí)候會(huì)占大量的CPU和內(nèi)存資源,導(dǎo)致服務(wù)load過(guò)高,出現(xiàn)短暫服務(wù)暫停現(xiàn)象。
4). Redis主從復(fù)制的性能問(wèn)題,為了主從復(fù)制的速度和連接的穩(wěn)定性,Slave和Master最好在同一個(gè)局域網(wǎng)內(nèi)
7, redis 最適合的場(chǎng)景
Redis最適合所有數(shù)據(jù)in-momory的場(chǎng)景,雖然Redis也提供持久化功能,但實(shí)際更多的是一個(gè)disk-backed的功能,跟傳統(tǒng)意義上的持久化有比較大的差別,那么可能大家就會(huì)有疑問(wèn),似乎Redis更像一個(gè)加強(qiáng)版的Memcached,那么何時(shí)使用Memcached,何時(shí)使用Redis呢?
如果簡(jiǎn)單地比較Redis與Memcached的區(qū)別,大多數(shù)都會(huì)得到以下觀點(diǎn):
、Redis不僅僅支持簡(jiǎn)單的k/v類(lèi)型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
、Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
、Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用。
(1)、會(huì)話緩存(Session Cache)
最常用的一種使用Redis的情景是會(huì)話緩存(session cache)。用Redis緩存會(huì)話比其他存儲(chǔ)(如Memcached)的優(yōu)勢(shì)在于:Redis提供持久化。當(dāng)維護(hù)一個(gè)不是嚴(yán)格要求一致性的緩存時(shí),如果用戶的購(gòu)物車(chē)信息全部丟失,大部分人都會(huì)不高興的,現(xiàn)在,他們還會(huì)這樣嗎?
幸運(yùn)的是,隨著 Redis 這些年的改進(jìn),很容易找到怎么恰當(dāng)?shù)氖褂肦edis來(lái)緩存會(huì)話的文檔。甚至廣為人知的商業(yè)平臺(tái)Magento也提供Redis的插件。
(2)、全頁(yè)緩存(FPC)
除基本的會(huì)話token之外,Redis還提供很簡(jiǎn)便的FPC平臺(tái)。回到一致性問(wèn)題,即使重啟了Redis實(shí)例,因?yàn)橛写疟P(pán)的持久化,用戶也不會(huì)看到頁(yè)面加載速度的下降,這是一個(gè)極大改進(jìn),類(lèi)似PHP本地FPC。
再次以Magento為例,Magento提供一個(gè)插件來(lái)使用Redis作為全頁(yè)緩存后端。
此外,對(duì)WordPress的用戶來(lái)說(shuō),Pantheon有一個(gè)非常好的插件 wp-redis,這個(gè)插件能幫助你以最快速度加載你曾瀏覽過(guò)的頁(yè)面。
(3)、隊(duì)列
Reids在內(nèi)存存儲(chǔ)引擎領(lǐng)域的一大優(yōu)點(diǎn)是提供 list 和 set 操作,這使得Redis能作為一個(gè)很好的消息隊(duì)列平臺(tái)來(lái)使用。Redis作為隊(duì)列使用的操作,就類(lèi)似于本地程序語(yǔ)言(如Python)對(duì) list 的 push/pop 操作。
如果你快速的在Google中搜索“Redis queues”,你馬上就能找到大量的開(kāi)源項(xiàng)目,這些項(xiàng)目的目的就是利用Redis創(chuàng)建非常好的后端工具,以滿足各種隊(duì)列需求。例如,Celery有一個(gè)后臺(tái)就是使用Redis作為broker,你可以從這里去查看。
(4),排行榜/計(jì)數(shù)器
Redis在內(nèi)存中對(duì)數(shù)字進(jìn)行遞增或遞減的操作實(shí)現(xiàn)的非常好。集合(Set)和有序集合(Sorted Set)也使得我們?cè)趫?zhí)行這些操作的時(shí)候變的非常簡(jiǎn)單,Redis只是正好提供了這兩種數(shù)據(jù)結(jié)構(gòu)。所以,我們要從排序集合中獲取到排名最靠前的10個(gè)用戶–我們稱(chēng)之為“user_scores”,我們只需要像下面一樣執(zhí)行即可:
當(dāng)然,這是假定你是根據(jù)你用戶的分?jǐn)?shù)做遞增的排序。如果你想返回用戶及用戶的分?jǐn)?shù),你需要這樣執(zhí)行:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games就是一個(gè)很好的例子,用Ruby實(shí)現(xiàn)的,它的排行榜就是使用Redis來(lái)存儲(chǔ)數(shù)據(jù)的,你可以在這里看到。
(5)、發(fā)布/訂閱
最后(但肯定不是最不重要的)是Redis的發(fā)布/訂閱功能。發(fā)布/訂閱的使用場(chǎng)景確實(shí)非常多。我已看見(jiàn)人們?cè)谏缃痪W(wǎng)絡(luò)連接中使用,還可作為基于發(fā)布/訂閱的腳本觸發(fā)器,甚至用Redis的發(fā)布/訂閱功能來(lái)建立聊天系統(tǒng)!(不,這是真的,你可以去核實(shí))。
Redis提供的所有特性中,我感覺(jué)這個(gè)是喜歡的人最少的一個(gè),雖然它為用戶提供如果此多功能。


浙公網(wǎng)安備 33010602011771號(hào)