跟王思聰熱狗圖同樣大熱的Redis,還不趕忙來Get一下?

  前言

  不由喊出一句ig牛逼!哈哈哈 這個話題是否是有點過期了?但說到Redis,真的是被強行灌輸的,處處都會被安利Redis,嚇得只會mysql和oracle的我,趕忙去get一波..html

  數據庫種類

  關係型數據庫

  經常使用的關係型數據庫:mysql oraclemysql

  特色:redis

  •   使用sql進行操做
  •        存儲在磁盤

  非關係型數據庫

  經常使用的非關係型數據庫:redis  Memcached算法

  特色:sql

  •   不依賴sql語句
  •        存儲在內存中

  Redis安裝

  安裝路徑

  •   官網:https://redis.io,進入以後,點擊「download」進行下載,最新版本:5.0.0,親測沒有問題
  •         Github:在首頁搜索redis,選擇第一個進行下載也能夠

  安裝方法

  1.   首先,將壓縮包解壓
  2.   進入目錄,看有Makefile,直接make,而後安裝:sudo make install 

  開源庫的安裝方法幾乎都同樣,更詳細的介紹能夠參考個人這篇博客:https://www.cnblogs.com/liudw-0215/p/9917422.html數據庫

  測試

  •   啓動server:redis-server
  •        啓動client:redis-cli
  •        在客戶端執行:ping 或ping hello,看到服務器有回顯,說明Redis安裝成功,以下圖:

 

  至此,Redis安裝成功!服務器

  Redis使用

  redis都是以鍵值對key-value存儲的,key必定是字符串類型,value多是字符串、list、set、sortedset和hash類型!數據結構

  字符串操做

  •   插入
set str1 hello
  •   查詢
get str1
  •   批量插入
mset str2 123 str2 456
  •   批量查詢
mget str1 str2 str3

  能夠看到key是不容許重複的!oracle

  list操做

  list能夠理解爲一串字符串,也能夠理解爲鏈表;操做過程當中,既能夠按照隊列操做,也能夠按照棧進行操做函數

  •   插入-頭插法
lpush ls1 aaa bbb ccc
  •        查詢

  查詢要稍微說一下,命令是lrange+key+範圍,要說明一下範圍該怎麼表示呢?從0開始能夠,那麼結束該怎麼表示呢?不知道一共有多少個?redis採用-1表示最後一個,-2表示倒數第二個,查詢第一個到最後一個命令:

lrange ls1 0 -1

  查詢結果以下:

  

  說明:注意到顯示順序了麼?「l」表明從左開始插入,也就是頭插法;若是理解數據結構的頭插法,跟這是同樣的,由於redis底層也是用數據結構+算法實現的!

  •   插入-尾插法
rpush ls2 1 2 3 4
  •   彈出最左邊
lpop ls2
  •   彈出最右邊
rpop ls2

     求list長度

llen ls1

  

  set操做

  set集合是沒有順序的,元素是惟一的

  插入

sadd set 1 2 3

  查詢

smembers set

  求差集(A-B)

sdiff A B

  求交集

sinter A B

  求並集

sunion A B

  運行結果以下:

 

  Redis的數據持久化

  redis將數據存儲在內存,速度比存在磁盤中快不少,大約在百萬量級的差異,可是宕機數據就沒了,這是不容許的!Redis提供了兩種解決辦法。

  RDB形式

  特色:存數據

  AOF形式

  特色:存命令

   hiredis介紹與安裝

  介紹  

    hiredis又是什麼鬼東西呢?它是封裝好的操做Redis的C語言API,安裝以後,C語言就能夠調用API,去操做Redis了。

  安裝

  依然很簡單,Github首頁搜索:hiredis,下載,解壓,make,sudo make install,一鼓作氣!

  測試

  看到安裝目錄下,有個examples目錄,這個目錄就是例子,能夠看到這個目錄下,有不少例子,能夠用example.c,而後編譯一下,個人版本會報錯,我修改了包含的頭文件,而後正常,運行結果以下:

  

  至此,hiredis安裝成功!

  hiredis API接口的說明

   封裝好的API接口有不少,但掌握4個就能夠完成基本的增刪改查了

  鏈接數據庫

  經過IP、端口進行鏈接,並返回redisContext,用於下面的使用

  

  發送請求命令

   函數原型:

  void *redisCommand(redisContext *c, const char *format, ...);

  參數:

  第一個參數:就是redisConnect的返回值

  其他參數就是可變參數了

  返回值:

  就頗有意思了,能夠參照下表:

  

  釋放資源 

  void freeReplyObject(void *reply);

  void redisFree(redisContext *c);

相關文章
相關標籤/搜索