使用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構建
#進入解壓后獲取到的文件夾 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 構建項? ,構建步驟和上面的構建步驟一致
安裝成功后,會在 /usr/local/include/ 中多出 sw ?錄, 并且內部包含 redis-plus-plus 的?系列頭?件. 會在 /usr/local/lib/ 中多出?系列 libredis 庫?件
二、redis的連接使用
詳細的API:
Github 地址
源碼結構:
.
├── 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設置獲取過期時間
設置過期時間:
//設置過期時間 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獲取類型
//獲取當前key的類型 std::string type = redis.type(key); std::cout << key << "類型為:" << type << std::endl;
2.7 刪除當前數(shù)據(jù)庫
redis.flushdb();
到此這篇關于使用redis-plus-plus庫連接redis的實現(xiàn)方法的文章就介紹到這了,更多相關redis-plus-plus庫連接redis內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

