使用C++操作Redis客户端

"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、农药、原神启动?      

RESP协议:        

 

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

Redis C++使用

(1) 环境安装

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

安装hiredis:

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

下载 redis-plus-plus源码:

Github:https://github.com/sewenew/redis-plus-plus 

编译 redis-plus-plus: 

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

yum install cmake3

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

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

        现在,我们可以开始使用这个库来操作redis了!         

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

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

● 创建redis对象.

● 调用ping命令

● 使用makefile编译生成可执行程序                

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

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

通用命令:

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

get\set:

        但,我们直接打印这个value是不行的,因为这个类没有重载"<<"移位操作符。

exists:

del:

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

● 输出迭代器 (input)

● 输入迭代器 (output)

● 前向迭代器 (forward_list)

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

● 随机迭代器 (string\vector)

expire and ttl:        

type:

String类型操作:

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

set\get:

set "NX 和 XX":

mset\mget:

getrange 和 setrange: 

incr/decr: 

hash类型操作:

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

hset 和 hget:

hexits:

hdel:

hkeys\hvals:

list类型操作:

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

lpush\lrange: 

blpop:

llen:

 

set类型操作:

         

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

sadd 和 smembers: 

 

sismember:

scard:

 

sinterstore:

Zset类型操作:

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

zadd/zrange: 

zrem:

 

zscore/zrank:

 

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


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

祝你好运,向阳而生~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值