使用C++操作Redis客户端

使用C++操作Redis客户端_第1张图片

"Who can say where the path will go?" 


         前面我们花了很大的篇幅,讲解了redis中常见常使用的五种数据结构,以及五种数据结构的操作和redis命令。不过在日常开发中,我们的这些操作都是在redis为我们提供的客户端中的,就像使用mysql一样,很多时候不是在mysql-cli去编写sql,而是借助代码程序去访问、操作数据库。更多的时候是使用redis的api,来实现定制化的redis客户端程序,达到访问redis的服务器的目的。

        redis提供了通用的客户端程序,比如命令行、第三方图形化客户端,但在实际中,我们更倾向于使用到的是"定制化"的客户端程序。

                   ——前言

认识RESP

为什么能够实现Redis客户端?

        你说能实现redis客户端就能实现嘛?或者说,如果能够实现redis客户端 ,那是否可以实现其他应用层服务的客户端,比如说qq、农药、原神启动?      使用C++操作Redis客户端_第2张图片

RESP协议:        使用C++操作Redis客户端_第3张图片

 使用C++操作Redis客户端_第4张图片

使用C++操作Redis客户端_第5张图片        但实际上,我们并不需要从0开始,遵照上述协议手写一份redis-cli,因为这套协议公开很久了,已经有很多大佬实现了这套解析、构造。我们只需要使用这些大佬提供的库即可。

Redis C++使用

(1) 环境安装

        C++操作redis的库有很多.咱们此处使⽤redis-plus-plus。这个库的功能强⼤,使⽤简单。

安装hiredis:

        因为redis-plus-plus是基于hiredis实现的,而这个库是一个C语⾔实现的redis客⼾端,我们直接使用包管理器安装即可。

使用C++操作Redis客户端_第6张图片

下载 redis-plus-plus源码:

Github:https://github.com/sewenew/redis-plus-plus 使用C++操作Redis客户端_第7张图片

编译 redis-plus-plus: 

        因为Centos系列的camke版本过低,所以我们需要安装camke3:

yum install cmake3

         这个redis-plus-plus使用文档,也介绍了安装手册。

使用C++操作Redis客户端_第8张图片

使用C++操作Redis客户端_第9张图片

        构建成功后,会在“ /usr/local/include/ ”中多出 sw ⽬录,并且内部包含redis-plus-plus的⼀
系列头⽂件,会在 /usr/local/lib/ 中多出⼀系列 libredis 库⽂件。

使用C++操作Redis客户端_第10张图片        现在,我们可以开始使用这个库来操作redis了!         

(2) redis-plus-plus "hello world"

● 包含redis-plus-plus头文件.

● 创建redis对象.

● 调用ping命令

● 使用makefile编译生成可执行程序                使用C++操作Redis客户端_第11张图片

        我们运行程序后,直接执行程序,就可以得到server给的响应。

使用C++操作Redis客户端_第12张图片

(3) redis-plus-plus命令使用

通用命令:

命令 执行效果
get/set 获取key、设置key
exist 判断一个key是否存在
del 删除key
keys 查询redisdb中缓存的key
expire / ttl 设置到期时间、剩余到期时间
type 获取value的类型信息

get\set:

使用C++操作Redis客户端_第13张图片

使用C++操作Redis客户端_第14张图片

使用C++操作Redis客户端_第15张图片        但,我们直接打印这个value是不行的,因为这个类没有重载"<<"移位操作符。

使用C++操作Redis客户端_第16张图片

exists:

使用C++操作Redis客户端_第17张图片

del:

使用C++操作Redis客户端_第18张图片

keys:
        C++的迭代器有几种类型,你是否还记得?

● 输出迭代器 (input)

● 输入迭代器 (output)

● 前向迭代器 (forward_list)

● 双向迭代器 (set\map\list)

● 随机迭代器 (string\vector)

使用C++操作Redis客户端_第19张图片

使用C++操作Redis客户端_第20张图片

expire and ttl:        使用C++操作Redis客户端_第21张图片

type:
使用C++操作Redis客户端_第22张图片

String类型操作:

命令 执行效果
set/get 设置、获取key
mset/mget 多次设置、获取key
getrange/setrange 获取范围内的value,覆盖在范围内的原始字符串
incr/decr ++value\-value

set\get:

使用C++操作Redis客户端_第23张图片

set "NX 和 XX":

使用C++操作Redis客户端_第24张图片

使用C++操作Redis客户端_第25张图片

mset\mget:

使用C++操作Redis客户端_第26张图片

getrange 和 setrange: 使用C++操作Redis客户端_第27张图片

incr/decr: 

使用C++操作Redis客户端_第28张图片

hash类型操作:

命令 执行效果
hset\hget 设置哈希,获取哈希value
hexists 判断field存在
hdel 删除field
hkeys\hvals 返回存储在键中的哈希中的所有字段名称。返回存储在键中的哈希中的所有值。
hmget\hmset 多次设置哈希,获取哈希value

hset 和 hget:

使用C++操作Redis客户端_第29张图片

hexits:

使用C++操作Redis客户端_第30张图片

hdel:
使用C++操作Redis客户端_第31张图片

hkeys\hvals:

使用C++操作Redis客户端_第32张图片

list类型操作:

命令 执行效果
lpush/rpush 头插、尾插
lpop/rpop 头删、尾删
blpop/brpop 阻塞头删、尾删
llen key中value的个数

lpush\lrange: 

使用C++操作Redis客户端_第33张图片

blpop:

使用C++操作Redis客户端_第34张图片

llen:

使用C++操作Redis客户端_第35张图片

 

set类型操作:

         

命令 执行效果
sadd\spop 添加、删除(随机)
smembers 查询所有的key
sismember key是否存在
scard key的个数
sinter/sinterstore 交集、交集存储

sadd 和 smembers: 

使用C++操作Redis客户端_第36张图片

 

sismember:

使用C++操作Redis客户端_第37张图片

scard:

使用C++操作Redis客户端_第38张图片

 

sinterstore:

使用C++操作Redis客户端_第39张图片

Zset类型操作:

命令 执行效果
zadd/zrange 添加、返回存储在< key >中的排序集合中指定范围的元素。
zcard 返回存储在key中的排序集的排序集基数(元素数)。
zrem 删除key中的member
zscore 获取key中的分数
zrank 返回成员在存储于键的排序集中的排名

zadd/zrange: 

使用C++操作Redis客户端_第40张图片

zrem:

使用C++操作Redis客户端_第41张图片 

zscore/zrank:

使用C++操作Redis客户端_第42张图片 

使用C++操作Redis客户端_第43张图片

        以上就是咱们五种数据结构的一些基本的用C++操纵redis的方式,当然这不是全部,只是一些例举。 


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

使用C++操作Redis客户端_第44张图片

你可能感兴趣的:(redis,redis,c++)