当前位置:网站首页>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
边栏推荐
- Pytorch(六) —— 模型调优tricks
- Pytest+allure+jenkins environment -- completion of pit filling
- 探索干货篇!Apifox 建设思路
- 【webrtc】m98 screen和window采集
- MySQL multi column index (composite index) features and usage scenarios
- [P2P] local packet capturing
- These five fishing artifacts are too hot! Programmer: I know, delete it quickly!
- 芯片 设计资料下载
- Binary tree and heap building in C language
- Content of string
猜你喜欢
【數字IC驗證快速入門】15、SystemVerilog學習之基本語法2(操作符、類型轉換、循環、Task/Function...內含實踐練習)
SQL优化的魅力!从 30248s 到 0.001s
2022 tea master (intermediate) examination questions and mock examination
padavan手动安装php
json 数据展平pd.json_normalize
[2022 ciscn] replay of preliminary web topics
Linux server development, detailed explanation of redis related commands and their principles
Open source ecosystem | create a vibrant open source community and jointly build a new open source ecosystem!
Thinkcmf6.0安装教程
Operation suggestions for today's spot Silver
随机推荐
2022 Inner Mongolia latest advanced fire facility operator simulation examination question bank and answers
Button wizard script learning - about tmall grabbing red envelopes
Cnopendata geographical distribution data of religious places in China
C语言通信行程卡后台系统
Content of string
CentOS7下安装PostgreSQL11数据库
[OBS] win capture requires winrt
快速使用 Jacoco 代码覆盖率统计
【VHDL 并行语句执行】
Numbers that appear only once
[webrtc] m98 Screen and Window Collection
Li Kou interview question 04.01 Path between nodes
Explore Cassandra's decentralized distributed architecture
LeetCode 90:子集 II
What are the positions of communication equipment manufacturers?
2022年全国最新消防设施操作员(初级消防设施操作员)模拟题及答案
QT learning 28 toolbar in the main window
Linux server development, redis protocol and asynchronous mode
探索Cassandra的去中心化分布式架构
2022 welder (elementary) judgment questions and online simulation examination