首页 > 编程语言 >C++客户端String类型实例讲解

C++客户端String类型实例讲解

来源:互联网 2026-07-23 07:59:10

基于C++客户端操作Redis的String类型,通过SET命令设置带过期时间的键值对,并利用GET和TTL命令获取键值及剩余存活时间,演示了过期时间设置与查询功能,实现了数据自动过期管理。

SET/GET

对于Redis的String类型,最基础的操作就是SET和GET。先看一个简单的例子,这里演示了如何设置带过期时间的key,以及如何获取TTL剩余时间。

#include
#include
#include
#include
#include
#include
#include
void test(sw::redis::Redis& redis)
{
    //引入命名空间
    using namespace std::chrono_literals;
    redis.flushall();
    //没引入命名空间版本
    //redis.set("key","111",std::chrono::seconds(10s));
    //引入命名空间版本
    redis.set("key","111",10s);
    //std::this_thread::sleep_for(std::chrono::seconds(3s));
    std::this_thread::sleep_for(3s);
    long long time = redis.ttl("key");
    std::cout<

NX/EX版本

在实际业务中,经常会遇到“只有key不存在时才设置”或者“只有key存在时才更新”的需求。Redis的SET命令原生支持NX和XX选项,而C++客户端也把这两个选项封装成了UpdateType枚举。注意,使用EX/XX时必须搭配过期时间,哪怕想长期存储也得传一个0s。来看下面的代码,它演示了NX和XX的用法,以及如何通过get判断key是否存在。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

#include
#include
#include
#include
#include
#include
#include
void test(sw::redis::Redis& redis)
{
    //引入命名空间
    using namespace std::chrono_literals;
    redis.flushall();
    //想写EX/XX版本必须要搭配过期时间来使用,想长期存储的话设置时间0s
    //NX版本
    redis.set("key1","111",0s,sw::redis::UpdateType::NOT_EXISTS);
    //XX版本
    redis.set("key1","222",0s,sw::redis::UpdateType::EXISTS);
    auto value = redis.get("key1");
    if(value)
    {
        std::cout<

MSET/MGET

批量操作能明显减少网络往返。MSET和MGET分别对应一次设置多个key和一次获取多个key。官方API提供了两种写法:一种是直接传一个pair的初始化列表,另一种是传迭代器范围。下面代码同时展示了两种方式,以及通过mget批量获取结果。

#include
#include
#include
#include
#include
#include
#include
void test(sw::redis::Redis& redis)
{
   redis.flushall();
    //写法1
redis.mset({std::make_pair("key1","111"),std::make_pair("key2","222"),std::make_pair("key3","333")});
    //写法2
std::vector> keys = {{"key1","111"},{"key2","222"},{"key3","333"}};
redis.mset(keys.begin(),keys.end());
//get方法1
auto value = redis.get("key1");
if(value)
{
    std::cout<<"value"< result;
auto it = std::back_inserter(result);
redis.mget({"key1","key2","key3"},it);
}
int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    test(redis);
}

MGET的参数列表

C++客户端String类型实例讲解

GETRANGE/SETRANGE

GETRANGE

C++客户端String类型实例讲解

返回值:string类型。注意,即使子串不存在,返回的也是空字符串,而不是nil——这一点和Redis原生命令保持一致,但C++的OptionalString在这里不会出现。

SETRANGE

C++客户端String类型实例讲解

第二个参数表示从哪个下标开始覆盖新字符串,第三个参数就是新字符串本身。下面的代码先设置了一个初始值“abcdefgh”,然后通过getrange截取子串“cdef”,再通过setrange从下标2开始覆盖为“xyz”,最终得到“abxyzfgh”。

#include
#include
#include
#include
#include
#include
#include
void test(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.set("key","abcdefgh");
    string result = redis.getrange("key",2,5);
    std::cout<

INCR DECR

INCR

数值自增自减操作在计数器场景中非常常见。Redis的INCR/DECR命令返回的是操作后的新值,C++客户端直接返回long long类型。下面代码把key初始化为“100”,然后自增得到101,再自减回到100。

#include
#include
#include
#include
#include
#include
#include
void test(sw::redis::Redis& redis)
{
    redis.flushall();
    redis.set("key","100");
    long long result = redis.incr();
    std::cout<
                

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。