zoukankan      html  css  js  c++  java
  • redis

    下载安装 https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100

    项目 nuget  添加 StackExchange.Redis

    添加 RedisHelper 类

    配置连接字符串 <add name="RedisConnectionString" connectionString="127.0.0.1:6379,password=123456"/>

    配置密码  Program FilesRedis edis.windows-service.conf  修改文件  requirepass 123456  默认没有密码

    注意检查服务 起来了没有

    cmd 命令 验证 密码

    cd  E:Program FilesRedis    ===>   redis-cli    =====>  auth 123456

    /// <summary>
    /// Redis 操作类
    /// </summary>
    public class RedisHelper
    {
    /// <summary>
    /// 连接字符串
    /// </summary>
    private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString;
    /// <summary>
    /// 锁
    /// </summary>
    private readonly object _lock = new object();
    /// <summary>
    /// 连接对象
    /// </summary>
    private volatile IConnectionMultiplexer _connection;
    /// <summary>
    /// 数据库
    /// </summary>
    private IDatabase _db;
    public RedisHelper()
    {
    _connection = ConnectionMultiplexer.Connect(ConnectionString);
    _db = GetDatabase();
    }
    /// <summary>
    /// 获取连接
    /// </summary>
    /// <returns></returns>
    protected IConnectionMultiplexer GetConnection()
    {
    if (_connection != null && _connection.IsConnected)
    {
    return _connection;
    }
    lock (_lock)
    {
    if (_connection != null && _connection.IsConnected)
    {
    return _connection;
    }

    if (_connection != null)
    {
    _connection.Dispose();
    }
    _connection = ConnectionMultiplexer.Connect(ConnectionString);
    }

    return _connection;
    }
    /// <summary>
    /// 获取数据库
    /// </summary>
    /// <param name="db"></param>
    /// <returns></returns>
    public IDatabase GetDatabase(int? db = null)
    {
    return GetConnection().GetDatabase(db ?? -1);
    }
    /// <summary>
    /// 设置
    /// </summary>
    /// <param name="key">键</param>
    /// <param name="data">值</param>
    /// <param name="cacheTime">时间</param>
    public virtual void Set(string key, object data, int cacheTime)
    {
    if (data == null)
    {
    return;
    }
    var entryBytes = Serialize(data);
    var expiresIn = TimeSpan.FromMinutes(cacheTime);

    _db.StringSet(key, entryBytes, expiresIn);
    }
    /// <summary>
    /// 根据键获取值
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="key"></param>
    /// <returns></returns>
    public virtual T Get<T>(string key)
    {

    var rValue = _db.StringGet(key);
    if (!rValue.HasValue)
    {
    return default(T);
    }

    var result = Deserialize<T>(rValue);

    return result;
    }
    /// <summary>
    /// 反序列化
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="serializedObject"></param>
    /// <returns></returns>
    protected virtual T Deserialize<T>(byte[] serializedObject)
    {
    if (serializedObject == null)
    {
    return default(T);
    }
    var json = Encoding.UTF8.GetString(serializedObject);
    return JsonConvert.DeserializeObject<T>(json);
    }
    /// <summary>
    /// 判断是否已经设置
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public virtual bool IsSet(string key)
    {
    return _db.KeyExists(key);
    }
    /// <summary>
    /// 序列化
    /// </summary>
    /// <param name="data"></param>
    /// <returns>byte[]</returns>
    private byte[] Serialize(object data)
    {
    var json = JsonConvert.SerializeObject(data);
    return Encoding.UTF8.GetBytes(json);
    }
    }

  • 相关阅读:
    ASP.NET网页动态添加数据行
    动态生成自定义控件ascx如何给ascx传值
    读取txt文件将文本行组合成特定格式
    怎样对文本文件内的文本行排序
    动态变更Repeater控件HeaderTemplate列名
    减少代码冗余,封装你的程序
    在Repeater控件的OnItemDataBound获取数据源记录总数
    查看服务器系统资源(cpu,内容)利用率前几位的进程的方法
    Nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
    gerrit代码简单备份方案分享
  • 原文地址:https://www.cnblogs.com/90nice/p/12657569.html
Copyright © 2011-2022 走看看