当前位置:网站首页>Summary of redis functions
Summary of redis functions
2022-07-07 08:03:00 【Absent mindedness】
#include "teb_local_planner/utils/redis_util.hpp"
Redis::Redis() {}
Redis::~Redis() {
_connect = nullptr;
_reply = nullptr;
}
bool Redis::connect(const string &host, int port) {
_connect = redisConnect(host.c_str(), port);
if (_connect != nullptr && _connect->err) {
cout << "connect error: " << _connect->errstr << endl;
return false;
}
return true;
}
string Redis::get(const string &key) {
string str = "";
_reply = static_cast<redisReply *>(redisCommand(_connect, "GET %s", key.c_str()));
if (_reply == nullptr) {
return str;
}
str = _reply->str;
freeReplyObject(_reply);
return str;
}
void Redis::set(const string &key, const string &value) {
redisCommand(_connect, "SET %s %s", key.c_str(), value.c_str());
}
void Redis::lpush(const string &key, const string &value) {
redisCommand(_connect, "LPUSH %s %s", key.c_str(), value.c_str());
}
int Redis::lget(const string &key, int begin_index, int end_index, std::vector<string> *data) {
_reply = static_cast<redisReply *>(redisCommand(_connect, "LRANGE %s %d %d", key.c_str(), begin_index, end_index));
if (_reply != nullptr && _reply->type == REDIS_REPLY_ARRAY) {
data->empty();
for (int i = 0; i < _reply->elements; ++i) {
data->push_back(_reply->element[i]->str);
}
}
freeReplyObject(_reply);
return 1;
}
string Redis::hget(const char *key, const char *hkey) {
const char *argv[3];
size_t argvlen[3];
argv[0] = "HGET";
argvlen[0] = 4;
argv[1] = key;
argvlen[1] = strlen(key);
argv[2] = hkey;
argvlen[2] = strlen(hkey);
_reply = (redisReply *) redisCommandArgv(_connect, 3, argv, argvlen);
std::string value;
if (_reply->type != REDIS_REPLY_NIL) {
value = std::string(_reply->str, _reply->str + _reply->len);
}
freeReplyObject(_reply);
return value;
}
int Redis::hset(const char *key, const char *hkey, const char *hvalue) {
_reply = static_cast<redisReply *>(redisCommand(_connect, "HSET %s %s %s", key, hkey, hvalue));
freeReplyObject(_reply);
return 1;
}
int Redis::hset(const char *key, const char *hkey, const char *hvalue, size_t hvaluelen) {
const char *argv[4];
size_t argvlen[4];
argv[0] = "HSET";
argvlen[0] = 4;
argv[1] = key;
argvlen[1] = strlen(key);
argv[2] = hkey;
argvlen[2] = strlen(hkey);
argv[3] = hvalue;
argvlen[3] = hvaluelen;
_reply = (redisReply *) redisCommandArgv(this->_connect, 4, argv, argvlen);
freeReplyObject(_reply);
return 1;
}
int Redis::del(const char *key) {
int res = 0;
_reply = (redisReply *) redisCommand(this->_connect, "DEL %s", key);
if (_reply->type == REDIS_REPLY_INTEGER) {
if (_reply->integer == 1L)
res = 1;
}
freeReplyObject(_reply);
return res;
}
int Redis::existsKey(const char* key){
_reply = (redisReply*)redisCommand(this->_connect, "exists %s", key);
int res = 0;
if(_reply->type == REDIS_REPLY_INTEGER){
if(_reply->integer == 1L)
res = 1;
}
freeReplyObject(_reply);
return res;
}
//
// Created by auser on 2021/9/11.
//
#ifndef SRC_REDIS_UTIL_HPP
#define SRC_REDIS_UTIL_HPP
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <hiredis/hiredis.h>
using namespace std;
class Redis {
public:
Redis();
~Redis();
bool connect(const string &host, int port);
string get(const string &key);
void set(const string &key, const string &value);
string hget(const char *key, const char *hkey);
int hset(const char *key, const char *hkey, const char *hvalue, size_t hvaluelen);
int hset(const char *key, const char *hkey, const char *hvalue);
void lpush(const string &key, const string &value);
int lget(const string &key, int begin_index, int end_index,std::vector<string> *data);
int existsKey(const char *key);
int del(const char *key);
private:
redisContext *_connect;
redisReply *_reply;
};
#endif //SRC_REDIS_UTIL_HPP
边栏推荐
- Codeforce c.strange test and acwing
- json 数据展平pd.json_normalize
- 2022 welder (elementary) judgment questions and online simulation examination
- Quickly use Jacobo code coverage statistics
- 【數字IC驗證快速入門】15、SystemVerilog學習之基本語法2(操作符、類型轉換、循環、Task/Function...內含實踐練習)
- Téléchargement des données de conception des puces
- [quick start of Digital IC Verification] 17. Basic grammar of SystemVerilog learning 4 (randomization)
- [OBS] win capture requires winrt
- Es FAQ summary
- 3D reconstruction - stereo correction
猜你喜欢
【数字IC验证快速入门】10、Verilog RTL设计必会的FIFO
Common validation comments
【数字IC验证快速入门】13、SystemVerilog interface 和 program 学习
Problem solving: unable to connect to redis
These five fishing artifacts are too hot! Programmer: I know, delete it quickly!
[Stanford Jiwang cs144 project] lab4: tcpconnection
[CV] Wu Enda machine learning course notes | Chapter 8
A bit of knowledge - about Apple Certified MFI
[experience sharing] how to expand the cloud service icon for Visio
buuctf misc USB
随机推荐
这5个摸鱼神器太火了!程序员:知道了快删!
[Matlab] Simulink 自定义函数中的矩阵乘法工作不正常时可以使用模块库中的矩阵乘法模块代替
Linux server development, redis protocol and asynchronous mode
Detailed explanation of Kalman filter for motion state estimation
[quickstart to Digital IC Validation] 15. Basic syntax for SystemVerilog Learning 2 (operator, type conversion, loop, Task / Function... Including practical exercises)
芯片 設計資料下載
JSON data flattening pd json_ normalize
Common method signatures and meanings of Iterable, collection and list
QT learning 28 toolbar in the main window
Linux server development, redis source code storage principle and data model
C language flight booking system
[2022 actf] Web Topic recurrence
Chip information website Yite Chuangxin
Li Kou interview question 04.01 Path between nodes
Pytest+allure+jenkins environment -- completion of pit filling
大视频文件的缓冲播放原理以及实现
Use and analysis of dot function in numpy
[webrtc] m98 Screen and Window Collection
Few-Shot Learning && Meta Learning:小样本学习原理和Siamese网络结构(一)
Most elements