一般,在系統中,咱們會把數據交由數據庫來存儲,但傳統的數據庫增刪查改的性能較差,且比較複雜。根據 80/20 法則,百分之八十的業務訪問集中在百分之二十的數據上。是否能夠有一個存在於物理內存中的數據中間層,來緩存一些經常使用的數據,解決傳統數據庫數據讀寫性能問題。經常使用的數據都存儲在內存中,讀寫性能很是可觀。git
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型的高性能的key-value數據庫。它支持存儲的value類型包括 string(字符串)、list(鏈表)、set(集合)、zset(sorted set有序集合)和 hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。在此基礎上,redis支持各類不一樣方式的排序。redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。github
> redis數據庫徹底在內存中,使用磁盤僅用於持久性。不只可用做緩存,更可爲一種key-value存儲,他徹底可替代後端的存儲服務,但須要作好備份。redis
> Redis能夠將數據複製到任意數量的從服務器。數據庫
> Redis的速度很是快,每秒能執行約11萬集合,每秒約81000+條記錄。vim
> 支持豐富的數據類型,Redis支持大多數開發人員已經知道的像列表,集合,有序集合,散列數據類型。這使得它很是容易解決各類各樣的問題,由於咱們知道哪些問題是能夠經過它的數據類型處理更好。windows
> 全部Redis操做是原子的,這保證了若是兩個客戶端同時訪問的Redis服務器將得到更新後的值。後端
> Redis是一個多功能實用的工具,能夠在多個用例如緩存,消息,隊列使用(Redis原生支持發佈/訂閱);任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數,熱點排行等。就看什麼樣的業務場景以及你怎麼去設計使用好它的數據結構。緩存
一、安裝服務器
首先能夠從redis官網找一個穩定版下載:https://redis.io/download網絡
# cd /usr/local # wget http://download.redis.io/releases/redis-4.0.2.tar.gz # tar zxf redis-4.0.2.tar.gz # cd redis-4.0.2
# #直接make則安裝到src目錄下,能夠經過以下方式安裝到指定目錄
# make PREFIX=/usr/local/redis install
安裝完後,在/usr/local/redis/bin下能夠看到以下文件,同時在redis-4.0.2/src/也是存在的。
各個文件以下:
redis-benchmark Redis性能測試工具 redis-check-aof 檢查aof日誌工具 redis-check-rdb 檢查rdb日誌工具 redis-cli 鏈接用的客戶端
redis-sentinel Redis集羣的管理工具 監控多個master-slave集羣,發現master宕機後能進行自動切換 redis-server Redis服務程序
啓動服務:
# cd /usr/local/redis/bin # ./redis-server
# #上面是以默認的配置啓動服務,能夠根據指定的配置文件啓動服務
# #首先將配置文件複製到安裝目錄下
# cp /usr/local/src/redis-4.0.2/redis.conf /usr/local/redis/
# #指定配置文件啓動
# ./redis-server ../redis-conf
這樣就算安裝成功了:默認端口能夠看到使用的是6379.
會發現啓動的redis一致佔據着終端,修改redis.conf,讓redis之後臺進程的形式運行。
# vim redis.conf
# #修改 daemonize 爲 yes 便可,而後從新啓動,就不會佔據終端了。
測試:./redis-cli 啓動客戶端
二、註冊成服務
將redis註冊成系統服務,否則每次都要到安裝目錄下手動啓動服務.
若是服務開着,首先把服務關掉:./redis-cli shutdown
首先將redis目錄下的初始化腳本拷貝到/etc/rc.d/init.d目錄,同時重命名爲redis
# cp /usr/local/src/redis-4.0.2/utils/redis_init_script /etc/rc.d/init.d/redis
修改redis腳本
a) 第二行增長以下內容:# chkconfig: 2345 80 90
b) 原腳本EXEC和CLIEXEC的值改到安裝目錄下.
c) 在$EXEC $CONF 後邊加一個&,表示讓redis做爲後臺服務啓動,不然該服務會獨佔輸入屏。
d) 能夠看到在/etc/init.d/redis文件中有這麼一行:CONF="/etc/redis/${REDISPORT}.conf",啓動時的默認配置文件爲/etc/redis/6379.conf。因而將redis配置文件拷貝到/etc/redis/下,並命名爲 6379.conf 。
# mkdir /etc/redis # cp /usr/local/src/redis-4.0.2/redis.conf /etc/redis/6379.conf
e) 至此修改完畢,註冊服務
# chkconfig --add redis
f) 啓動服務和中止服務命令
# service redis start # service redis stop
一、安裝
首先下載windows版redis:https://github.com/MicrosoftArchive/redis/releases
這裏我下載解壓版:
下載完成後,解壓便可:能夠看到以下文件.
redis-server.exe Redis啓動程序
redis.windows.conf 配置文件
經過以下命令啓動:這樣就表明啓動成功。一樣會一直佔用着終端。
啓動客戶端進行測試:
二、註冊成系統服務
redis-server.exe --service-install redis.windows.conf
redis安裝完成以後,可使用圖形化管理工具RedisDesktopManager,能夠很方便的查看redis的全部數據。
經過管理工具咱們能夠看到redis的數據庫:
redis默認有16個數據庫,能夠經過配置文件修改。
redis下,數據庫是由一個整數索引標識,默認啓用0數據庫,經過select命令能夠切換數據庫。且每一個數據庫都有屬於本身的空間,沒必要擔憂之間的key衝突。
* flushdb,清空當前數據庫,flushall,清空全部數據庫。
redis有不少數據類型,如string、list、set、zset等等,這裏先學習redis對於key的操做命令,再學習數據類型的操做。
首先插入幾條數據:
可使用模糊查詢key,有三個通配符 *、?、[]。* 通配任意字符,? 通配單個字符,[] 通配某一個字符。
例如抽獎時可用於隨機抽取一我的。
返回的類型可能有string、list、set、zset、hash等,但不包括int、boolean、long這種基本類型,其以字符串形式保存。
若是newkey 已經存在,則newkey的原值被覆蓋
nx > not exists,即newkey不存在時才修改,發生修改時返回1,未發生修改返回0。
不存在的key忽略,返回真正刪除的key的數量
pexpire key milliseconds:設置生命週期,單位毫秒。
redis的key默認是永久有效的。
pttl key:返回毫秒數。
對於不存在的key、已通過期的key返回-2;永久有效的key,返回-1。
pexpireat key milliseconds-timestamp:unix時間爲毫秒。
須要將過時的時間轉爲Unix時間戳。
能夠將設置過時時間的key轉爲永久有效。
最後:
不要使用太長的鍵,例如,不要使用一個 1024 字節的鍵,不只是由於內存佔用,並且在數據集中查找鍵時須要屢次耗時的鍵比較。
不要使用過短的鍵。用」u1000flw」 取代」user:1000:followers」 做爲鍵並無什麼實際意義,後者更具備可讀性,相對於鍵對象自己以及值對象來講,增長的空間微乎其微。
堅持一種模式 (schema)。例如,」object-type:id」 就不錯,就像」user:1000」。點或者橫線經常使用來鏈接多單詞字段,如」comment:1234:reply.to」,或者」comment:1234:reply-to」。
鍵的最大大小是 512MB。