使用redis-plus-plus庫連接redis的實現(xiàn)方法
一、安裝redis-plus-plus
C++ 操作 redis 的庫有很多. 此處使? redis-plus-plus,因為這個庫的功能強?, 使?簡單
下載地址
1.1安裝hiredis
redis-plus-plus 是基于 hiredis 實現(xiàn)的 ,hiredis 是?個 C 語?實現(xiàn)的 redis 客?端 ,因此需要先安裝 hiredis. 直接使?包管理器安裝即可
Ubuntu:
sudo apt install libhiredis-dev
Centos:
sudo yum install hiredis-devel.x86_64
1.2編譯安裝redis-plus-plus
通過指令下載 redis-plus-plus 源碼
git clone https://github.com/sewenew/redis-plus-plus.git
如果連接不上可以點擊上面的下載地址,進行下載壓縮包:
- 點擊Code
- 點擊Download ZIP下載
將下載的壓縮包解壓一下:
unzip 文件名
Ubuntu可直接使用cmake構(gòu)建
#進入解壓后獲取到的文件夾 cd redis-plus-plus #創(chuàng)建build文件夾且進入 mkdir build && cd build #編譯生成makefile文件 cmake .. #編譯源代碼 make #安裝 sudo make install
如果是Centos,需要注意一下cmake版本,系統(tǒng)自帶的cmake版本較低,需要安裝cmake3
sudo yum install cmake3 -y
然后使? cmake3 構(gòu)建項? ,構(gòu)建步驟和上面的構(gòu)建步驟一致
安裝成功后,會在 /usr/local/include/ 中多出 sw ?錄, 并且內(nèi)部包含 redis-plus-plus 的?系列頭?件. 會在 /usr/local/lib/ 中多出?系列 libredis 庫?件
二、redis的連接使用
詳細的API:
Github 地址
源碼結(jié)構(gòu):
. ├── Makefile └── src ├── generic.cc ├── list.cc ├── set.cc └── string.cc 1 directory, 5 files
使用makefile編譯時需要注意:由于不同系統(tǒng)中, 安裝好的庫所在位置會存在差異. 因此要注意?件路徑是否存在
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對象
//頭文件根據(jù)實際情況,可能路徑不同 #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中添加元素
一次添加單個元素
//添加元素 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; }
一次添加多個元素
//批量添加元素 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獲取元素
一次獲取一個元素
//獲取元素 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; }
一次獲取多個元素
//批量獲取元素 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è)置獲取過期時間
設(shè)置過期時間:
//設(shè)置過期時間 std::string key = "key"; bool b = redis.expire(key,std::chrono::seconds(10)); if(b == false)std::cout << "expire failed" << std::endl;
獲取過期時間:
//獲取過期時間 long long s = redis.ttl(key); std::cout << key << "的過期時間:" << 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ù)庫
redis.flushdb();
到此這篇關(guān)于使用redis-plus-plus庫連接redis的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)redis-plus-plus庫連接redis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!