整理的Redis筆記大全,非常的全,歡迎一起交流學習。
1.什麼是redis?
Redis 是一個基於內存的高性能key-value數據庫。
2.Reids的特點
1) Key-Value類型的內存數據庫,
2)支持保存多種數據結構,
3)Redis的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,
3.使用redis有哪些好處?
(1) 速度快
(2) 支持豐富數據類型,支持string,list,set,sorted set,hash
(3) 支持事務,
(4) 豐富的特性:可用於緩存,消息,按key設置過期時間,過期後將會自動刪除
4.redis相比memcached有哪些優勢?
(1) memcached所有的值均是簡單的字符串,redis作爲其替代者,支持更爲豐富的數據類型
(2) redis的速度比memcached快很多
(3) redis可以持久化其數據
5.redis持久化的幾種方式
1)、快照(snapshots),rdb策略
默認開啓,Redis把數據快照存放在磁盤上的二進制文件中,文件名爲dump.rdb。你可以配置Redis的持久化策略,例如數據集中每N秒鐘有超過M次更新,就將數據寫入磁盤;或者你可以手工調用命令SAVE或BGSAVE。
下面是默認的快照保存配置
save 900 1
save 300 10
save 60 10000
2)、AOF
快照模式並不十分健壯,當系統停止,或者無意中Redis被kill掉,最後寫入Redis的數據就會丟失。你可以在配置文件中打開AOF模式,每一秒持久化一次。
默認沒開啓,每秒一次,只要有寫操作即備份系統
6.redis 最適合的場景
(1)、會話緩存(Session Cache),購物車信息
(2)、全頁緩存(FPC)
(3)、隊列
(4),排行榜/計數器
(5)、發佈/訂閱
7.Redis支持的Java客戶端都有哪些?
Redisson、Jedis
8.文章點擊排行榜,由文章名稱和點擊次數構成,使用哪個數據類型比較方便?
zset,分數、排序(默認根據分數從小到大排序)
9.如何用string數據類型表達mysql中的一行數據?
可以將整行表示成一個json字符串
10.如果存儲一個班學生的身份證,並且方便統計總個數,用哪個數據類型?
1)set,scard
2)hash,hlen
11.zset的分數是什麼意思?
分數就是一個double類型的數字,比較精密。
12.如何根據分數大小倒序排列?
zrevrange
13.查找分數在80-90分之間的學生姓名
zrangbyscore kaoshi 80 90
14.如何立即(實時)備份?
save: 阻塞 Redis 主進程,直到保存完成爲止
bgsave: fork 出一個子進程,異步備份
15.RDB默認配置文件名後綴是什麼?
dump.rdb
16.如何開啓AOF持久化?
appendonly yes
17.你如何理解redis集羣的水平擴展?
水平擴展/橫向擴展,只需要增加/減少機器即可,原來的結構不需要改變。有16384個槽,這是可能需要重新劃分槽。
18.解釋CAP?
CAP理論
C:consistency(一致性):數據能在多個副本之間保持一致性
A:avalibility(可用性) :對於用戶的每一個操作在一定時間段內都應該有響應
P:Partition-tolerence to partition(分區容錯性):分佈式網絡中部分網絡不可用時, 系統依然正常對外提供服務
三者不可共存,可用性和一致性是一對冤家,在容忍網絡分區的前提下,要麼犧牲數據的一致性,要麼犧牲寫操作的可用性。
redis滿足AP,放棄了部分C,這是redis的CAP策略。
19.如何理解分區容錯性:分佈式系統在遇到任何網絡分區故障的時候,仍然能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障。
。
20.一臺主庫可以擁有多個從庫,但是一個從庫只能隸屬於一個主庫,對嗎?
對,也就是說在主從架構中只有一個master
21.redis集羣的負載均衡策略?
分槽
23.什麼是守護進程?如何在守護進程模式下運行redis?
daemize yes
24.如何修改redis實例的運行端口?
port 6380
25.如何關閉redis?
shutdown save|unsave命令
./redis-cli -p 6379 shutdown
26.如何手動進行持久化?
save
bgsave
27.寫出登錄主機192.168.3.3上端口爲7000密碼爲ads999的redis實例的命令?
redis-cli -h 192.168.3.3 -p 7000 -a ads999
28.如何獲取一個key還有多長時間過期?
ttl keyname
-1 永不過期
-2 已經過期
5 還剩5秒過期
29.如何從第5個庫中隨機獲取一個key的名稱,寫出命令?
select 4
randomkey
30.key值可以修改嗎?如何能修改的話如何修改?
可以,rename oldname newname
31.如何獲取第5個庫內key的總個數?寫出命令
select 4
dbsize
32.如何判斷一個key的數據類型?
type
33.如何判斷wangming是不是屬於集合student中的元素?
SISMEMBER students wangming
34.如何爲一個redis添加訪問密碼?
redis.conf
requirepass admin132
35.rdb持久化和aof持久化的不同之處?默認恢復時先讀取哪種持久化文件?
先選擇aof.
36.如果在一個主從複製架構中,爲了提高整個架構的吞吐率,在master中持久化好還是在slave中持久化好?
slave
37.主從架構中,一個master可以有N多個slave,對嗎?各個slave之間是什麼關係?
對
1)第一種架構,一主多從,各個slave沒有關係,但是數據各個slave最終一致。因爲是異步複製,所以不保證實時一致。
2)第二種架構,級聯關係,slave有關係、
38.主從架構中,master和所有slave的值最終都是一樣的,對嗎?
對。
39.一個redis集羣至少要3個master,可以沒有slave也可以有多個slave,對嗎?
對,最小的配置時3個master,0個slave.
40.一個redis集羣如果要求每個master必須有1個slave的話,該集羣至少需要6個redis實例,對嗎?
對。
41.解釋一下主從之間的異步複製?
在複製的同時也可以響應客戶端的請求,不必等待複製成功再響應用戶。
異步複製代理的結果就是我們並不知道複製是否成功,不能100%確定是否複製成功,不是實時的。
42.集羣中的master實例是彼此互聯的,並且數據彼此同步,對嗎
不對。彼此互聯是對的,數據沒有同步。槽的分配原理,數據存儲在槽中。
43.如果在配置文件中禁用持久化後,執行save命令還會生成持久化文件嗎?
會,不衝突。禁用持久化只是取消了自動持久化操作。
44.如果事務執行失敗,返回值是什麼?
1)如果在命令行中返回的是nil
2)如果在jedis客戶端返回的是null
45.在jedis中執行事務,如果成功了,返回值是什麼數據類型?怎麼知道事務中第2個命令的返回值是多少?
jedis返回List對象,該list存着每一個命令的執行結果。get(1)
46.主從複製架構中,並不能保證主從實時複製,也不保證一定複製成功,對嗎
對,異步複製。
47.簡述集羣的負載均衡原理?
通過對槽的分配達到負載均衡,首先槽的個數一定16384並且在master節點按照比較平均的算法將這些槽分配到
歡迎進入qq羣:894294771,一起學習交流。