日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis使用介绍

發(fā)布時間:2023/12/18 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis使用介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Redis 是一個高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類keyvalue存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP,Java客戶端,使用很方便。

Redis使用單線程的IO復(fù)用模型,自己封裝了一個簡單的AeEvent事件處理框架,主要實現(xiàn)了epoll、kqueue和select,對于單純只有IO操作來說,單線程可以將速度優(yōu)勢發(fā)揮到最大,但是Redis也提供了一些簡單的計算功能,比如排序、聚合等,對于這些操作,單線程模型實際會嚴(yán)重影響整體吞吐量,CPU計算過程中,整個IO調(diào)度都是被阻塞住的。

?

?

Redis除了作為存儲之外還提供了一些其它方面的功能,比如聚合計算、pubsub、scripting等,對于此類功能需要了解其實現(xiàn)原理,清楚地了解到它的局限性后,才能正確的使用,比如pubsub功能,這個實際是沒有任何持久化支持的,消費(fèi)方連接閃斷或重連之間過來的消息是會全部丟失的,又比如聚合計算和scripting等功能受Redis單線程模型所限,是不可能達(dá)到很高的吞吐量的,需要謹(jǐn)慎使用。

?

本例子Linux采用的centOs5.4

下面來介紹一下redis的安裝

[java]?view plain?copy?print??

  • wget??http:?//redis.googlecode.com/files/redis-2.0.4.tar.gz???
  • tar?zxvf?redis-?2.0?.?4?.tar.gz??
  • cd??redis-?2.0?.?4???
  • make??
  • make完后 redis-2.0.4目錄下會出現(xiàn)編譯后的redis服務(wù)程序redis-server,還有用于測試的客戶端程序redis-cli

    安裝成功

    啟動服務(wù)

    ./redis-server

    也可以通過啟動參數(shù)告訴redis使用指定配置文件使用下面命令啟動

    ./redis-server redis.conf

    redis.conf是一個默認(rèn)的配置文件。我們可以根據(jù)需要使用自己的配置文件。

    啟動redis服務(wù)進(jìn)程后,就可以使用測試客戶端程序redis-cli和redis服務(wù)交互了

    注意啟動的時候,會出現(xiàn)

    WARNING overcommit_memory is set to 0!Background save may fail under

    low memory condition. To fix this issue add'vm.overcommit_memory = 1' to /etc/sysctl.conf and??

    [6020] 10 Aug 20:58:21 * The server is nowready to accept connections on port 6379

    [6020] 10 Aug 20:58:21 - 0 clientsconnected (0 slaves), 533432 bytes in use

    [6020] 10 Aug 20:58:30 - 0 clientsconnected (0 slaves), 533432 bytes in use

    還有就是執(zhí)行:sysctl vm.overcommit_memory=1

    關(guān)于redis一些資料的學(xué)習(xí)可以到http://www.cnblogs.com/xhan/archive/2011/02/08/1949867.html?去學(xué)習(xí) ,很全面

    下面介紹一個簡單java客戶端Jedis,大家可以到https://github.com/xetorthio/jedis?這網(wǎng)址下載

    redis作為NoSQL數(shù)據(jù)庫的一種應(yīng)用,響應(yīng)速度和命中率上還是比較高效的。項目中需要用集中式可橫向擴(kuò)展的緩存框架,做了一點調(diào)研,即便redis、memcached存在效率上的差異(具體比較參考http://timyang.net/data/mcdb-tt-redis/),但其實都能滿足目前項目的需求;但是redis還是比較風(fēng)騷的,支持鏈表和集合操作,支持正則表達(dá)式查找key,目前項目緩存的結(jié)果大多是鏈表,如果鏈表新增或者修改數(shù)據(jù)的話,redis就體現(xiàn)出了極大的優(yōu)勢(memcached只能重新加載鏈表,redis可以對鏈表新增或者修改)

    1:下載redis

    下載地址 http://code.google.com/p/redis/downloads/list

    推薦下載redis-1.2.6.tar.gz,之前這個版本同事已經(jīng)有成功安裝運(yùn)行的經(jīng)驗,redis-2.0.4.tar.gz 這個版本我安裝后無法操作緩存數(shù)據(jù),具體原因后續(xù)再說

    2:安裝redis

    下載后解壓 tar zxvf redis-1.2.6.tar.gz 到任意目錄,例如/usr/local/redis-1.2.6

    解壓后,進(jìn)入redis目錄

    ??? cd /usr/local/redis-1.2.6?

    ??? make?

    拷貝文件

    cp redis.conf /etc/ 這個文件時redis啟動的配置文件

    cp redis-benchmark redis-cli redis-server /usr/bin/ #這個倒是很有用,這樣就不用再執(zhí)行時加上./了,而且可以在任何地方執(zhí)行

    設(shè)置內(nèi)存分配策略(可選,根據(jù)服務(wù)器的實際情況進(jìn)行設(shè)置)

    /proc/sys/vm/overcommit_memory

    可選值:0、1、2。

    0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。

    1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何。

    2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存

    值得注意的一點是,redis在dump數(shù)據(jù)的時候,會fork出一個子進(jìn)程,理論上child進(jìn)程所占用的內(nèi)存和parent是一樣的,比如parent占用的內(nèi)存為8G,這個時候也要同樣分配8G的內(nèi)存給child,如果內(nèi)存無法負(fù)擔(dān),往往會造成redis服務(wù)器的down機(jī)或者IO負(fù)載過高,效率下降。所以這里比較優(yōu)化的內(nèi)存分配策略應(yīng)該設(shè)置為 1(表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何)

    開啟redis端口,修改防火墻配置文件

    ??? vi /etc/sysconfig/iptables?

    加入端口配置

    ??? -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT?

    重新加載規(guī)則

    ??? service iptables restart??

    3:啟動redis服務(wù)

    ??? [root@Architect redis-1.2.6]# pwd?

    ??? /usr/local/redis-1.2.6?

    ??? [root@Architect redis-1.2.6]# redis-server /etc/redis.conf?

    查看進(jìn)程,確認(rèn)redis已經(jīng)啟動

    ??? [root@Architect redis-1.2.6]# ps -ef | grep redis?

    ??? root?????? 401 29222? 0 18:06 pts/3??? 00:00:00 grep redis?

    ??? root???? 29258???? 1? 0 16:23 ???????? 00:00:00 redis-server /etc/redis.conf?

    如果這里啟動redis服務(wù)失敗,一般情況下是因為redis.conf文件有問題,建議檢查或找個可用的配置文件進(jìn)行覆蓋,避免少走彎路,這里建議,修改redis.conf,設(shè)置redis進(jìn)程為后臺守護(hù)進(jìn)程

    ??? # By default Redis does not run as a daemon. Use 'yes' if you need it.?

    ??? # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.?

    ??? daemonize yes?

    4:測試redis

    ??? [root@Architect redis-1.2.6]# redis-cli?

    ??? redis> set name songbin?

    ??? OK?

    ??? redis> get name??

    ??? "songbin"?

    5:關(guān)閉redis服務(wù)

    ??? redis-cli shutdown?

    redis服務(wù)關(guān)閉后,緩存數(shù)據(jù)會自動dump到硬盤上,硬盤地址為redis.conf中的配置項dbfilename dump.rdb所設(shè)定

    強(qiáng)制備份數(shù)據(jù)到磁盤,使用如下命令

    ??? redis-cli save 或者 redis-cli -p 6380 save(指定端口)

    安裝的時候,make完了之后再make install 就自動安裝到/usr/local/bin下了,不用手動cp的

    ?

    ?

    ?redis函數(shù)操作

    http://www.runoob.com/redis/sorted-sets-zscore.html

    出自http://blog.csdn.net/ajun_studio/article/details/6698147 和http://www.oschina.net/question/12_18065?sort=time

    ?

    Welcome to redis-py’s documentation!

    Indices and tables

    • Index
    • Module Index
    • Search Page

    ?

    http://redis-py.readthedocs.org/en/latest/

    轉(zhuǎn)載于:https://www.cnblogs.com/wicub/p/5368490.html

    總結(jié)

    以上是生活随笔為你收集整理的Redis使用介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。