直接贴代码, 需要引用 ServiceStack.Common.dll,ServiceStack.Interfaces.dll,ServiceStack.Redis.dll,ServiceStack.Text.dll
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using ServiceStack.Redis;
- namespace RedisDemo
- {/// <summary>
- /// RedisManager 类主要是创建链接池管理对象的
- /// </summary>
- public class RedisManager
- {
- /// <summary>
- /// redis 配置文件信息
- /// </summary>
- public static string RedisPath = ConfigurationManager.AppSettings["RedisPath"];
- private static PooledRedisClientManager _prcm;
- /// <summary>
- /// 静态构造方法, 初始化链接池管理对象
- /// </summary>
- static RedisManager()
- {
- CreateManager();
- }
- /// <summary>
- /// 创建链接池管理对象
- /// </summary>
- public static void CreateManager()
- {
- _prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });
- }
- /// <summary>
- /// 关闭 redis 连接
- /// </summary>
- public void CloseCon()
- {
- try
- {
- _prcm.Dispose();
- Console.WriteLine("Redis Dispose...");
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }
- }
- /// <summary>
- /// 设置 redis
- /// </summary>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public bool Set(string key, string value)
- {
- using (IRedisClient client = _prcm.GetClient())
- {
- return client.Set(key, value);
- }
- }
- private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
- {
- #region
- //WriteServerList: 可写的 Redis 链接地址.
- //ReadServerList: 可读的 Redis 链接地址.
- //MaxWritePoolSize: 最大写链接数.
- //MaxReadPoolSize: 最大读链接数.
- //AutoStart: 自动重启.
- //LocalCacheTime: 本地缓存到期时间, 单位: 秒.
- //RecordeLog: 是否记录日志, 该设置仅用于排查 redis 运行时出现的问题, 如 redis 工作正常, 请关闭该项.
- //RedisConfigInfo 类是记录 redis 连接信息, 此信息和配置文件中的 RedisConfig 相呼应
- #endregion
- // 支持读写分离, 均衡负载
- return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
- {
- MaxWritePoolSize = 50, // "写" 链接池链接数
- MaxReadPoolSize = 50, // "读" 链接池链接数
- AutoStart = true,
- });
- }
- public string Get(string value)
- {
- using (IRedisClient client = _prcm.GetClient())
- {
- return client.Get<string>(value);
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2731488.html