redis

redis使用方式

【cache   VS  storage】
 redis是作為緩存,還是作為存儲(chǔ)使用?
 1.作為緩存的話枉侧,業(yè)務(wù)方必須為每個(gè)key都設(shè)置過期時(shí)間羡藐,并且請(qǐng)注明當(dāng)redis內(nèi)存到達(dá)配額上限時(shí)是否允許key被逐出(默認(rèn)LRU)
 2.作為存儲(chǔ)使用几缭,業(yè)務(wù)方需要考慮數(shù)據(jù)的清洗策略婿禽,否則redis的內(nèi)存量會(huì)一直增長(zhǎng)藐窄,最終達(dá)到上限,導(dǎo)致服務(wù)不可用蘸鲸。

 對(duì)同一套redis的使用榨婆,不要出現(xiàn)部分key設(shè)置了過期時(shí)間,另外部分key沒有設(shè)置過期時(shí)間的情況氮唯。

【內(nèi)存使用量鉴吹,以及未來(lái)的增長(zhǎng)趨勢(shì)如何?】
 預(yù)計(jì)整個(gè)業(yè)務(wù)單份內(nèi)存量,5GB/10GB/20GB還是更多?未來(lái)2年內(nèi)會(huì)增漲到大概多少GB?
 redis內(nèi)存使用量估算方式:(key的平均長(zhǎng)度+value的平均長(zhǎng)度) * kv個(gè)數(shù) * 2

 為什么要 乘以 2 ?
 redis內(nèi)存的估算本身很復(fù)雜惩琉,與key是否設(shè)置了過期時(shí)間豆励,key的大小,value的類型和大小瞒渠,value采用的編碼和存儲(chǔ)方式良蒸,redis實(shí)例自身垃圾回收的速度,每秒寫入量的大小等都相關(guān)伍玖。所以乘以2是比較保守的估算方式嫩痰。

 對(duì)內(nèi)存資源的評(píng)估請(qǐng)本著認(rèn)真負(fù)責(zé)的態(tài)度,既要能滿足業(yè)務(wù)擴(kuò)展的需求窍箍,又要杜絕資源的浪費(fèi)串纺。

【qps量,以及未來(lái)的增長(zhǎng)趨勢(shì)如何椰棘?】
 整個(gè)redis集群需要提供的qps量纺棺,1w、2w還是5w邪狞,甚至更多祷蝌?未來(lái)1-2年預(yù)估會(huì)達(dá)到多少?
 qps在5000以下的帆卓,請(qǐng)優(yōu)先考慮使用mysql巨朦,我們的mysql可以滿足絕大部分業(yè)務(wù)需求乡翅,同時(shí)提供更好的高可用和數(shù)據(jù)安全解決方案。對(duì)于qps很凶锝肌(例如只有幾百甚至幾十的qps),但是業(yè)務(wù)場(chǎng)景非常適合使用Redis的尚洽,請(qǐng)說(shuō)明具體原因悔橄。

【業(yè)務(wù)使用的命令? KEY設(shè)計(jì)方式?】
 一般redis是由dba來(lái)維護(hù)的,我們申請(qǐng)redis的時(shí)候腺毫,業(yè)務(wù)線要列舉用到的命令癣疟,這樣方便DBA對(duì)業(yè)務(wù)更深入的理解,幫助業(yè)務(wù)優(yōu)化和定位問題潮酒。
 比如:
 讀命令:get, lrange, hget 等等
 寫(或讀寫)命令:setex, set, lpush, lpop 等等
 KEY設(shè)計(jì)方式:給出key的例子睛挚,要簡(jiǎn)短,易懂急黎,比如:key1=user:name**
 注:部分高危命令慎用扎狱,有些公司會(huì)做屏蔽,即使有密碼也無(wú)法使用勃教,被屏蔽的命令列表參考:
   (1)如果命令來(lái)自于白名單列表淤击,那么不管是否設(shè)置了密碼,都跳過密碼驗(yàn)證階段故源。目的是為了方便dba的管理和兼容之前的各種監(jiān)控統(tǒng)計(jì)腳本污抬,否則改造代價(jià)太大。
   (2)用戶即使提供了密碼绳军,也無(wú)法使用如下高危命令印机,除非用戶的ip地址在白名單中。也即门驾,在白名單中的ip地址射赛,可以執(zhí)行如下命令。而不在白名單中的ip奶是,即使提供了密碼咒劲,也不能使用如下的高危命令:
       bgrewriteaof        config get           config set 
       config resetstat    config rewrite       flushall
       flushdb             shutdown             save
       bgsave              client kill          client list 
       slowlog             monitor              slaveof
       info

【機(jī)房部署】
 redis需要部署在哪個(gè)機(jī)房?
 是否有跨機(jī)房部署需求?我們一般不推薦跨機(jī)房部署redis。例如如果前端和業(yè)務(wù)邏輯都在node1機(jī)房诫隅,那么推薦redis也部署在node1機(jī)房

【是否使用java】
 如果dba提供了針對(duì)java的客戶端腐魂,該客戶端具有自動(dòng)sharding、連接池等功能逐纬,并通過zookeeper和redis哨兵保證了redis集群的高可用蛔屹,因此推薦使用dba提供的java client來(lái)訪問redis. 

 如果是非java語(yǔ)言,需要訪問redis豁生,請(qǐng)另行與dba溝通兔毒。

【業(yè)務(wù)的namespace及業(yè)務(wù)聯(lián)系人郵件漫贞、郵件組】
 namespace需要dba和業(yè)務(wù)人員共同商定。該名稱最好能反映出redis所屬的部門育叁,例如支付迅脐、無(wú)線、酒店等豪嗽,另外能反映出業(yè)務(wù)用途谴蔑,例如qmp_status等.這樣方便日后的溝通和問題定位
 namespace不要超過20個(gè)字符,多個(gè)單詞用_分隔

單機(jī)redis安裝

1.安裝redis官網(wǎng):[http://redis.io/download](http://redis.io/download)
  可能需要安裝make 
  yum -y install gcc automake autoconf libtool make
  安裝redis:
  $ wget [http://download.redis.io/releases/redis-2.8.17.tar.gz] 
  $ tar -zxvf redis-2.8.17.tar.gz
  $ cd redis-2.8.17
  $ make
  $ make install

  安裝完成后龟梦,會(huì)在redis安裝目錄下出現(xiàn)一個(gè)src文件夾隐锭,redis-cli 、redis-server在這個(gè)目錄下

獲取項(xiàng)目中redis信息

  1.在項(xiàng)目中引入redis bean
    ```
     <bean id="beanRedis" class="redis client class">
      <constructor-arg index="0">
            <value>need param</value>
      </constructor-arg>
      <constructor-arg index="1">
           <value>need param</value>
      </constructor-arg>
    </bean>
    ```
 2.一般公司redis集群信息
   clustername    ip         port    timeout     coresize    maxsize
   cluster6399    *.*.*.*    6399    1000        10          40

 3.redis-cli獲取redis信息
   sudo redis-cli -h 127.0.0.1 -p 6399 -a 密碼    (ip  port  根據(jù)自己環(huán)境不同)
   smembers onekey

 4.查看key剩余過期時(shí)間
    ttl    onekey
    當(dāng) key 不存在時(shí)计贰,返回 -2 钦睡。 
    當(dāng) key 存在但沒有設(shè)置剩余生存時(shí)間時(shí),返回 -1 躁倒。 
    否則荞怒,以秒為單位,返回 key 的剩余生存時(shí)間秧秉。 
    在 Redis 2.8 以前挣输,當(dāng) key 不存在,或者 key 沒有設(shè)置剩余生存時(shí)間時(shí)福贞,命令都返回 -1 

項(xiàng)目中遇到的一些bug

1.redis存儲(chǔ)與java讀取 數(shù)據(jù)結(jié)構(gòu)不一致
  redis中存的string 撩嚼,取的時(shí)候用的對(duì)象類型鸿染,應(yīng)該一致
2.java獲取緩存數(shù)據(jù)失敗紊选,重新查找接口問題
3.memcached遷移到redis,共存期間乡洼,hash算法不一致拇舀,導(dǎo)致獲取不到數(shù)據(jù)

緩存測(cè)試case參考

 場(chǎng)景逻族,老服務(wù)A使用memcached ,新服務(wù)B使用redis骄崩,在遷移過程會(huì)有數(shù)據(jù)共存的現(xiàn)象聘鳞,這邊列出的可能不夠詳細(xì),僅供參考:
 1.redis 讀寫要拂;
 2.數(shù)據(jù)一致性:B寫抠璃,A讀; A寫脱惰,B讀搏嗡;
 3.容量評(píng)估(考慮命中率);
 4.超時(shí)時(shí)間;
 5.緩存失效采盒;
 等等

網(wǎng)絡(luò)辟謠

1.關(guān)于bind做網(wǎng)絡(luò)限制的錯(cuò)誤解釋
  bind 127.0.0.1
  翻看網(wǎng)上的文章旧乞,此處多翻譯為“指定redis只接收來(lái)自于該IP地址的請(qǐng)求,如果不進(jìn)行設(shè)置磅氨,那么將處理所有請(qǐng)求尺栖,在生產(chǎn)環(huán)境中最好設(shè)置該項(xiàng)”。
  這種解釋會(huì)totally搞糊涂初學(xué)者烦租,甚至是錯(cuò)誤的延赌。該處的英文原文為:
        If you want you can bind a single interface, if the bind option is not specified all the interfaces will listen for incoming connections.

  bind 127.0.0.1該處說(shuō)明bind的是interface,也就是說(shuō)是網(wǎng)絡(luò)接口左权。服務(wù)器可以有一個(gè)網(wǎng)絡(luò)接口(通俗的說(shuō)網(wǎng)卡),或者多個(gè)痴颊。
  打個(gè)比方說(shuō)機(jī)器上有兩個(gè)網(wǎng)卡赏迟,分別為192.168.205.5 和192.168.205.6,如果bind 192.168.205.5蠢棱,那么
  只有該網(wǎng)卡地址接受外部請(qǐng)求锌杀,如果不綁定,則兩個(gè)網(wǎng)卡口都接受請(qǐng)求泻仙。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糕再,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子玉转,更是在濱河造成了極大的恐慌突想,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究抓,死亡現(xiàn)場(chǎng)離奇詭異猾担,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刺下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門绑嘹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人橘茉,你說(shuō)我怎么就攤上這事工腋。” “怎么了畅卓?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵擅腰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我翁潘,道長(zhǎng)惕鼓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任唐础,我火速辦了婚禮箱歧,結(jié)果婚禮上矾飞,老公的妹妹穿的比我還像新娘。我一直安慰自己呀邢,他們只是感情好洒沦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著价淌,像睡著了一般申眼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝉衣,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天括尸,我揣著相機(jī)與錄音,去河邊找鬼病毡。 笑死濒翻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啦膜。 我是一名探鬼主播有送,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼僧家!你這毒婦竟也來(lái)了雀摘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤八拱,失蹤者是張志新(化名)和其女友劉穎阵赠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肌稻,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豌注,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灯萍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧铁。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旦棉,靈堂內(nèi)的尸體忽然破棺而出齿风,到底是詐尸還是另有隱情,我是刑警寧澤绑洛,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布救斑,位于F島的核電站,受9級(jí)特大地震影響真屯,放射性物質(zhì)發(fā)生泄漏脸候。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望运沦。 院中可真熱鬧泵额,春花似錦、人聲如沸携添。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烈掠。三九已至羞秤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間左敌,已是汗流浹背瘾蛋。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矫限,地道東北人哺哼。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奇唤,于是被迫代替她去往敵國(guó)和親幸斥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匹摇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Redis雜談 Redis是近年來(lái)發(fā)展迅速的內(nèi)存數(shù)據(jù)庫(kù)咬扇,網(wǎng)上也已經(jīng)有多Redis的文章。但不管是英文還是中文廊勃,多數(shù)...
    迷失于重逢閱讀 1,549評(píng)論 0 14
  • 1.1 資料 懈贺,最好的入門小冊(cè)子,可以先于一切文檔之前看坡垫,免費(fèi)梭灿。 作者Antirez的博客,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,050評(píng)論 1 51
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴(kuò)展溉卓、高可用皮迟、大數(shù)據(jù)存儲(chǔ)問題而產(chǎn)生的數(shù)據(jù)庫(kù)解決方...
    克魯?shù)吕?/span>閱讀 5,291評(píng)論 0 36
  • RedisRedis命令參考網(wǎng)址:http://doc.redisfans.com/ Redis 簡(jiǎn)介Redis ...
    野柳閱讀 1,125評(píng)論 0 9
  • 【前幕】 夏末,轟隆隆的雷雨毫不喘息的下了兩天桑寨,將京都平日里的炎熱盡數(shù)澆滅伏尼。只是京都街頭的熱鬧亦被澆得沒了生氣,所...
    梁暔閱讀 581評(píng)論 1 6