Redis學習——安裝、通用key操做命令

1、Redis介紹

一、介紹

  一般,在系統中,咱們會把數據交由數據庫來存儲,但傳統的數據庫增刪查改的性能較差,且比較複雜。根據 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 優點

  > redis數據庫徹底在內存中,使用磁盤僅用於持久性。不只可用做緩存,更可爲一種key-value存儲,他徹底可替代後端的存儲服務,但須要作好備份。redis

  > Redis能夠將數據複製到任意數量的從服務器。數據庫

  > Redis的速度很是快,每秒能執行約11萬集合,每秒約81000+條記錄。vim

  > 支持豐富的數據類型,Redis支持大多數開發人員已經知道的像列表,集合,有序集合,散列數據類型。這使得它很是容易解決各類各樣的問題,由於咱們知道哪些問題是能夠經過它的數據類型處理更好。windows

  > 全部Redis操做是原子的,這保證了若是兩個客戶端同時訪問的Redis服務器將得到更新後的值。後端

  > Redis是一個多功能實用的工具,能夠在多個用例如緩存,消息,隊列使用(Redis原生支持發佈/訂閱);任何短暫的數據,應用程序,如Web應用程序會話,網頁命中計數,熱點排行等。就看什麼樣的業務場景以及你怎麼去設計使用好它的數據結構。緩存

 

2、Redis安裝

一、Linux下安裝

一、安裝服務器

首先能夠從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下安裝

一、安裝

首先下載windows版redis:https://github.com/MicrosoftArchive/redis/releases

這裏我下載解壓版:

下載完成後,解壓便可:能夠看到以下文件.

redis-server.exe   Redis啓動程序

redis.windows.conf  配置文件

經過以下命令啓動:這樣就表明啓動成功。一樣會一直佔用着終端。

啓動客戶端進行測試:

二、註冊成系統服務

redis-server.exe --service-install redis.windows.conf

 

三、Redis數據庫

redis安裝完成以後,可使用圖形化管理工具RedisDesktopManager,能夠很方便的查看redis的全部數據。

經過管理工具咱們能夠看到redis的數據庫:

redis默認有16個數據庫,能夠經過配置文件修改。

redis下,數據庫是由一個整數索引標識,默認啓用0數據庫,經過select命令能夠切換數據庫。且每一個數據庫都有屬於本身的空間,沒必要擔憂之間的key衝突。

* flushdb,清空當前數據庫,flushall,清空全部數據庫。

3、Redis通用key操做命令

redis有不少數據類型,如string、list、set、zset等等,這裏先學習redis對於key的操做命令,再學習數據類型的操做。

首先插入幾條數據:

一、 keys:查詢key

可使用模糊查詢key,有三個通配符 *、?、[]。* 通配任意字符,? 通配單個字符,[] 通配某一個字符。

二、randomkey:隨機取一個key

例如抽獎時可用於隨機抽取一我的。

三、exists key:判斷key是否存在,返回1/0

四、type key:判斷key存儲的值的類型

 返回的類型可能有string、list、set、zset、hash等,但不包括int、boolean、long這種基本類型,其以字符串形式保存。

五、rename key newkey:重命名key

若是newkey 已經存在,則newkey的原值被覆蓋

六、renamenx key newkey:重命名key

nx > not exists,即newkey不存在時才修改,發生修改時返回1,未發生修改返回0。

七、del key1 key2 ... keyn:刪除key

不存在的key忽略,返回真正刪除的key的數量

八、move key dbid:將key移動到dbid數據庫

九、expire key seconds:設置key的生命週期,單位秒

pexpire key milliseconds:設置生命週期,單位毫秒。

redis的key默認是永久有效的。

十、ttl key:查詢key的生命週期,返回秒數

pttl key:返回毫秒數。

對於不存在的key、已通過期的key返回-2;永久有效的key,返回-1。

十一、expireat key timestamp:設置key的過時時間,timestamp爲unix的時間戳

pexpireat key milliseconds-timestamp:unix時間爲毫秒。

須要將過時的時間轉爲Unix時間戳。

十二、persist key:把指定的key設爲永久有效

能夠將設置過時時間的key轉爲永久有效。

最後:

不要使用太長的鍵,例如,不要使用一個 1024 字節的鍵,不只是由於內存佔用,並且在數據集中查找鍵時須要屢次耗時的鍵比較。 

不要使用過短的鍵。用」u1000flw」 取代」user:1000:followers」 做爲鍵並無什麼實際意義,後者更具備可讀性,相對於鍵對象自己以及值對象來講,增長的空間微乎其微。

堅持一種模式 (schema)。例如,」object-type:id」 就不錯,就像」user:1000」。點或者橫線經常使用來鏈接多單詞字段,如」comment:1234:reply.to」,或者」comment:1234:reply-to」。

鍵的最大大小是 512MB。

轉自:http://www.cnblogs.com/chiangchou/

相關文章
相關標籤/搜索