Redis使用方法&其他

使用方法

步骤1、在需要使用Redis的项目中引用FxCommon.dllRedis.dll

步骤2、在App.config或Web.config文件中添加如下配置

<add key="RedisServerIP" value="redis:uuid845tylabc123@139.198.13.12:4125"/>
<!-- 提供的 Redis 环境是单机版配置。如果 Redis 是主从配置,则还需设置 RedisSlaveServerIP-->
<!--<add key="RedisSlaveServerIP" value="redis:uuid845tylabc123@139.198.13.13:4125"/>--> 

<!--Redis 数据库。如果不需要指定 Redis 数据库,就配置默认值 0-->     
<add key="RedisDefaultDb" value="0"/>

 

步骤 3、使用 PooledRedisClientManager 类创建 Redis 连接池:

// 读取 Redis 主机 IP 配置信息
string[] redisMasterHosts = ConfigurationManager.ConnectionStrings["RedisServerIP"].ConnectionString.Split(','); 

// 如果 Redis 服务器是主从配置,那么还需要读取 Redis Slave 机的 IP 配置信息
string[] redisSlaveHosts = null;
var slaveConnection = ConfigurationManager.ConnectionStrings["RedisSlaveServerIP"];
if (slaveConnection != null && !string.IsNullOrWhiteSpace(slaveConnection.ConnectionString))
{    
    string redisSlaveHostConfig = slaveConnection.ConnectionString;    
    redisSlaveHosts = redisSlaveHostConfig.Split(',');
} 

// 读取 RedisDefaultDb 配置
int defaultDb = 0;
string defaultDbSetting = ConfigurationManager.AppSettings["RedisDefaultDb"];
if (!string.IsNullOrWhiteSpace(defaultDbSetting))
{    
    int.TryParse(defaultDbSetting, out defaultDb);
} 

var redisClientManagerConfig = new RedisClientManagerConfig
{    
    MaxReadPoolSize = 50,    
    MaxWritePoolSize = 50,    
    DefaultDb = defaultDb
};

// 创建 Redis 连接池
Manager = new PooledRedisClientManager(redisMasterHosts, redisSlaveHosts, redisClientManagerConfig)
{    
    PoolTimeout = 2000,    
    ConnectTimeout = 500                
};

 

步骤4、通过PooledRedisClientManager的实例获取Redis客户端,然后就可以开始通过Redis客户端的API进行操作。

其他

1、 Redis Key命名规范

Redis Key命名规范:AppID:KeyName。

可能有很多人习惯用英文状态的点号来作为AppID和KeyName的分隔符,而笔者建议使用冒号作为AppID和KeyName的分隔符,其原因是:这么写会使Redis Key会以AppID作为分类显示在Redis Desktop Manager中,方便你能够快速查到要查阅的Redis Key对应的Redis Value值,请见下图:

05171510_JyHJ.jpg

但如果使用英文状态的点号来作为分隔符的话,那么在Redis Desktop Manager中,Redis Key就不会被分类了,请见下图:

05171510_OSIP.jpg

2、常见应用问题

  • 缓存穿透处理什么是缓存穿透?当根据Redis key在缓存中查询后,不存在对应Value,就应该会在后端系统如DB中去查找,该Key的并发请求量一旦变大,那么就会对DB造成很大的压力。解决办法有:a.前端风险控制,将恶意穿透情况排除在外;b.对查询结果为空的情况依然进行缓存,但缓存时间会设置得很短,一般是几分钟。

  • 缓存雪崩处理什么是缓存雪崩?当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。解决办法有:后端连接数限制,错误阈值限制,超时处理,缓存失效时间均匀分布,前端永不失效及后端主动更新。

  • 缓存时长:策略定位复杂,需要多维度的计算。

  • 缓存失效:按时失效,事件失效,后端主动更新。

  • 缓存Key:Hash、规则、前缀+Hash,异常情况可人工干预。

  • Lua脚本:服务端批量处理及事务能力,有条件逻辑的可扩展脚本。使用它的好处有:减少网络开销、原子操作、可复用。

  • Limit:可滑动时间窗口,如应用于Session,Memcached需每次传Key和Value。

Demo 下载及更多资料

  • RedisDemo下载地址

    https://github.com/das2017/RedisDemo

  • RedisDesktopManage下载地址

    https://redisdesktop.com/

  • Redis官网

    https://redis.io/

  • ServiceStack.Redis客户端

    https://github.com/ServiceStack/ServiceStack.Redis

  • Redis命令大全

    http://www.redis.cn/commands.html

转载于:https://my.oschina.net/inchlifc/blog/1573149

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt连接Redis使用方法主要步骤如下: 1. 首先,在Qt项目中添加连接Redis的库文件。可以选择使用"cpp_redis"或者"redis-plus-plus"等相关库,这些库提供了与Redis交互的功能。 2. 在Qt项目中,将需要连接Redis的相关代码放置在适当的位置,例如在主窗口类中。 3. 在代码中,首先创建连接Redis的对象,例如使用"cpp_redis::client"或者"redis::client"。 4. 连接Redis服务器。调用连接Redis方法,传入Redis服务器的IP地址和端口号。 5. 连接成功后,可以进行具体的Redis操作,比如存储数据,获取数据,删除数据等。 6. 使用相关方法进行Redis操作。不同的库可能提供不同的方法,但是它们都应该提供常见的Redis操作功能,例如set、get、del等。 7. 使用完毕后,关闭Redis连接。调用相应的方法,关闭与Redis服务器的连接。 需要注意的是,不同的Redis连接库可能有不同的用法,具体使用方法要参考相应的库文档。 总之,Qt连接Redis使用方法主要包括添加连接Redis的库文件、创建连接对象、连接Redis服务器、进行Redis操作和关闭连接等步骤。根据具体的库文件和项目需求,进行相应的操作即可。 ### 回答2: Qt连接Redis主要通过Redis C++ Client实现。Redis C++ Client是一个基于hiredis的开源Redis客户端库,在Qt中可以使用该库来连接和操作Redis数据库。 首先,需要在Qt项目中添加Redis C++ Client的依赖。可以通过在.pro文件中添加以下内容来引入Redis C++ Client: ``` LIBS += -lhiredis ``` 然后,在Qt代码中引入Redis C++ Client的头文件: ``` #include <redisclient.h> ``` 接下来,创建一个RedisClient对象来连接Redis数据库: ``` RedisClient redis; redis.connectToServer("127.0.0.1", 6379); // 设置Redis的IP地址和端口号 ``` 在连接成功后,可以使用RedisClient对象执行各种Redis命令,如获取或设置键值对: ``` QString key = "mykey"; QString value = "myvalue"; redis.set(key, value); // 设置键为mykey,值为myvalue的键值对 QString result = redis.get(key); // 获取键为mykey的值 qDebug() << "Value: " << result; ``` 除了设置和获取键值对,还可以执行其他Redis命令,如删除键、获取多个键的值等等。 ``` redis.del(key); // 删除键为mykey的键值对 QList<QString> keys = { "key1", "key2", "key3" }; QList<QString> values = redis.mget(keys); // 获取多个键的值 for (QString value : values) { qDebug() << "Value: " << value; } ``` 最后,在不需要连接Redis数据库时,可以关闭连接: ``` redis.disconnectFromServer(); ``` 需要注意的是,以上只是Redis C++ Client库的基本使用方法,具体的使用还可以根据实际需求来进行扩展和修改。同时,还需要确保Redis服务器已经正确的安装和运行,并且允许远程连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值