发现博客园中好多大牛在介绍自己的开源项目是很少用到缓存,比如Memcached、Redis、mongodb等,今天得空抽时间把Redis缓存研究了一下,写下来总结一下,跟大家一起分享 一下。由于小弟水平有限又是第一次接触Redis,有些的不对的地方欢迎指出纠正。

1、  下载安装Redis

下载地址: https://github.com/MSOpenTech/Redis 。

2、  安装Redis

     在下载的文件中找到bin并打开。

Redis缓存服务搭建及实现数据读写 - Eric.Chen

  • redis-server.exe:服务程序(目前我们只用到这一个)
  • redis-check-dump.exe:本地数据库检查
  •  redis-check-aof.exe:更新日志检查
  •  redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).

Redis有很多配置参数,这里就不介绍了,有兴趣的朋友可以到网上查查。

双击redis-server.exe或者在命令窗口中输入D:\redis-2.6\redis-server.exe即可启动Redis服务。

 Redis缓存服务搭建及实现数据读写 - Eric.Chen

  注意 端口号:Port:6379 在我们的程序中会用到该端口号。

3、  数据读、写、删测试,并实现list存数。

首先引用下面四个DLL文件

 Redis缓存服务搭建及实现数据读写 - Eric.Chen

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using ServiceStack.Redis;
using ServiceStack.Text;
using ServiceStack.Redis.Generic;

namespace RedisStudy
{
    public class RedisHelper:IDisposable
    {
        public RedisClient Redis = new RedisClient("127.0.0.1", 6379);
        //缓存池
        PooledRedisClientManager prcm = new PooledRedisClientManager();
        
        //默认缓存过期时间单位秒
        public int secondsTimeOut = 30 * 60;
       
        /// <summary>
        /// 缓冲池
        /// </summary>
        /// <param name="readWriteHosts"></param>
        /// <param name="readOnlyHosts"></param>
        /// <returns></returns>
        public static PooledRedisClientManager CreateManager(
         string[] readWriteHosts, string[] readOnlyHosts)
        {
            return new PooledRedisClientManager(readWriteHosts, readOnlyHosts,
                new RedisClientManagerConfig
                {
                    MaxWritePoolSize = readWriteHosts.Length * 5,
                    MaxReadPoolSize = readOnlyHosts.Length * 5,
                    AutoStart = true,
                });// { RedisClientFactory = (IRedisClientFactory)RedisCacheClientFactory.Instance.CreateRedisClient("127.0.0.1", 6379) };           
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="OpenPooledRedis">是否开启缓冲池</param>
        public RedisHelper(bool OpenPooledRedis=false)
        {
            
            if (OpenPooledRedis)
            {
                prcm = CreateManager(new string[] { "127.0.0.1:6379" }, new string[] { "127.0.0.1:6379" });
                Redis = prcm.GetClient() as RedisClient;
            }
        }

        #region Key/Value存储
        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key">缓存建</param>
        /// <param name="t">缓存值</param>
        /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
        /// <returns></returns>
        public bool Set<T>(string key, T t, int timeout = 0)
        {
            if (timeout >= 0)
            {
                if (timeout > 0)
                {
                    secondsTimeOut = timeout;
                }
                Redis.Expire(key, secondsTimeOut);
            }
            
            return Redis.Add<T>(key, t);
        }
        /// <summary>
        /// 获取
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public T Get<T>(string key)
        {
            return Redis.Get<T>(key);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="key"></param>
        

相关文章:

  • 2021-06-19
  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-24
  • 2021-10-14
  • 2021-08-05
猜你喜欢
  • 2021-05-20
  • 2021-08-06
  • 2023-04-10
  • 2022-01-04
  • 2023-04-11
相关资源
相似解决方案