使用redis-plus-plus庫(kù)連接redis的實(shí)現(xiàn)方法
一、安裝redis-plus-plus
C++ 操作 redis 的庫(kù)有很多. 此處使? redis-plus-plus,因?yàn)檫@個(gè)庫(kù)的功能強(qiáng)?, 使?簡(jiǎn)單
下載地址
1.1安裝hiredis
redis-plus-plus 是基于 hiredis 實(shí)現(xiàn)的 ,hiredis 是?個(gè) C 語(yǔ)?實(shí)現(xiàn)的 redis 客?端 ,因此需要先安裝 hiredis. 直接使?包管理器安裝即可
Ubuntu:
sudo apt install libhiredis-dev
Centos:
sudo yum install hiredis-devel.x86_64
1.2編譯安裝redis-plus-plus
通過(guò)指令下載 redis-plus-plus 源碼
git clone https://github.com/sewenew/redis-plus-plus.git
如果連接不上可以點(diǎn)擊上面的下載地址,進(jìn)行下載壓縮包:
- 點(diǎn)擊Code
- 點(diǎn)擊Download ZIP下載
將下載的壓縮包解壓一下:
unzip 文件名
Ubuntu可直接使用cmake構(gòu)建
#進(jìn)入解壓后獲取到的文件夾 cd redis-plus-plus #創(chuàng)建build文件夾且進(jìn)入 mkdir build && cd build #編譯生成makefile文件 cmake .. #編譯源代碼 make #安裝 sudo make install
如果是Centos,需要注意一下cmake版本,系統(tǒng)自帶的cmake版本較低,需要安裝cmake3
sudo yum install cmake3 -y
然后使? cmake3 構(gòu)建項(xiàng)? ,構(gòu)建步驟和上面的構(gòu)建步驟一致
安裝成功后,會(huì)在 /usr/local/include/ 中多出 sw ?錄, 并且內(nèi)部包含 redis-plus-plus 的?系列頭?件. 會(huì)在 /usr/local/lib/ 中多出?系列 libredis 庫(kù)?件
二、redis的連接使用
詳細(xì)的API:
Github 地址
源碼結(jié)構(gòu):
. ├── Makefile └── src ├── generic.cc ├── list.cc ├── set.cc └── string.cc 1 directory, 5 files
使用makefile編譯時(shí)需要注意:由于不同系統(tǒng)中, 安裝好的庫(kù)所在位置會(huì)存在差異. 因此要注意?件路徑是否存在
test: test.cc g++ -std=c++17 -o $@ $^ /usr/local/lib/libredis++.a /lib/x86_64-linux-gnu/libhiredis.a -pthread
2.1創(chuàng)建redis對(duì)象
//頭文件根據(jù)實(shí)際情況,可能路徑不同 #include<iostream> #include<vector> #include<string> #include<hiredis/hiredis.h> #include<sw/redis++/redis.h> int main(){ Redis redis("tcp://127.0.0.1:6379");//傳入url return 0; }
2.2向redis中添加元素
一次添加單個(gè)元素
//添加元素 std::string key = "key"; std::string value = "hello"; bool b = redis.set(key, value); //b = redis.set("mykey", "World", std::chrono::seconds(0),sw::redis::UpdateType::EXIST); //b = redis.set("mykey", "World", std::chrono::milliseconds(0), sw::redis::UpdateType::NOT_EXIST); std::cout << "set " << key << value << std::endl; if(b){ std::cout << " set OK" << std::endl; }else{ std::cout << "set failed" << std::endl; }
一次添加多個(gè)元素
//批量添加元素 std::vector<std::pair<std::string,std::string>> v = {{"key","hello",},{"key1","world"},{"key2", "redis"}}; redis.mset(v.begin(),v.end());
2.3判斷元素是否存在
//判斷元素是否存在 std::string key = "key"; long long n = redis.exists(key); std::cout << "exists key" << std::endl << n << std::endl;
2.4獲取元素
一次獲取一個(gè)元素
//獲取元素 sw::redis::OptionalString ret = redis.get(key); std::cout << "redis<<< " << "get " << key << std::endl; if(ret){ std::cout << *ret << std::endl; }else{ std::cout << "nil" << std::endl; }
一次獲取多個(gè)元素
//批量獲取元素 std::vector<sw::redis::OptionalString> values; //創(chuàng)建插入迭代器 //std::insert_iterator<std::vector<sw::redis::OptionalString>> ret = std::inserter(values, values.begin()); std::insert_iterator<std::vector<sw::redis::OptionalString>> ni(values,values.begin()); redis.mget({"key", "key1", "key2"}, ni); //輸出獲取到的元素 for(auto e : values){ std::cout << *e << std::endl; }
2.5設(shè)置獲取過(guò)期時(shí)間
設(shè)置過(guò)期時(shí)間:
//設(shè)置過(guò)期時(shí)間 std::string key = "key"; bool b = redis.expire(key,std::chrono::seconds(10)); if(b == false)std::cout << "expire failed" << std::endl;
獲取過(guò)期時(shí)間:
//獲取過(guò)期時(shí)間 long long s = redis.ttl(key); std::cout << key << "的過(guò)期時(shí)間:" << s << std::endl;
2.6獲取類型
//獲取當(dāng)前key的類型 std::string type = redis.type(key); std::cout << key << "類型為:" << type << std::endl;
2.7 刪除當(dāng)前數(shù)據(jù)庫(kù)
redis.flushdb();
到此這篇關(guān)于使用redis-plus-plus庫(kù)連接redis的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)redis-plus-plus庫(kù)連接redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis常見(jiàn)限流算法原理及實(shí)現(xiàn)
這篇文章主要介紹了Redis常見(jiàn)限流算法原理及實(shí)現(xiàn),限流簡(jiǎn)稱流量限速(Rate?Limit)是指只允許指定的事件進(jìn)入系統(tǒng),超過(guò)的部分將被拒絕服務(wù)、排隊(duì)或等待、降級(jí)等處理2022-08-08基于redis.properties文件的配置及說(shuō)明介紹
今天小編就為大家分享一篇基于redis.properties文件的配置及說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05