不由喊出一句ig牛逼!哈哈哈 這個話題是否是有點過期了?但說到Redis,真的是被強行灌輸的,處處都會被安利Redis,嚇得只會mysql和oracle的我,趕忙去get一波..html
經常使用的關係型數據庫:mysql oraclemysql
特色:redis
經常使用的非關係型數據庫:redis Memcached算法
特色:sql
開源庫的安裝方法幾乎都同樣,更詳細的介紹能夠參考個人這篇博客:https://www.cnblogs.com/liudw-0215/p/9917422.html數據庫
至此,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能夠理解爲一串字符串,也能夠理解爲鏈表;操做過程當中,既能夠按照隊列操做,也能夠按照棧進行操做函數
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集合是沒有順序的,元素是惟一的
插入
sadd set 1 2 3
查詢
smembers set
求差集(A-B)
sdiff A B
求交集
sinter A B
求並集
sunion A B
運行結果以下:
redis將數據存儲在內存,速度比存在磁盤中快不少,大約在百萬量級的差異,可是宕機數據就沒了,這是不容許的!Redis提供了兩種解決辦法。
特色:存數據
特色:存命令
hiredis又是什麼鬼東西呢?它是封裝好的操做Redis的C語言API,安裝以後,C語言就能夠調用API,去操做Redis了。
依然很簡單,Github首頁搜索:hiredis,下載,解壓,make,sudo make install,一鼓作氣!
看到安裝目錄下,有個examples目錄,這個目錄就是例子,能夠看到這個目錄下,有不少例子,能夠用example.c,而後編譯一下,個人版本會報錯,我修改了包含的頭文件,而後正常,運行結果以下:
至此,hiredis安裝成功!
封裝好的API接口有不少,但掌握4個就能夠完成基本的增刪改查了
經過IP、端口進行鏈接,並返回redisContext,用於下面的使用
函數原型:
void *redisCommand(redisContext *c, const char *format, ...);
參數:
第一個參數:就是redisConnect的返回值
其他參數就是可變參數了
返回值:
就頗有意思了,能夠參照下表:
void freeReplyObject(void *reply);
void redisFree(redisContext *c);