.net core 使用windows版redis
在项目中为了减少程序占用内存(将结果保存在全局变量里面,会占用内存),要求使用redis。开始了爬坑的过程。o(╥﹏╥)o
c#操作redis 基本就这3中情况:
ServiceStack.Redis 是商业版,免费版有限制;如果大量对redis 读写 ,要花钱买(不知道老板批不批o(╥﹏╥)o),说使用3.0版本(回退版本,之前版本不收费),然后发布之后运行会出bug,想死
StackExchange.Redis 是免费版,但是内核在 .NETCore 运行有问题经常 Timeout,暂无法解决;这个是最坑的,因为本地测试不出任何问题,一发布之后运行,会报很多的bug(访问的是windows版redis,linux不清楚)。
最后找到了亲爱的这个:CSRedis,完美(不知道为啥,初步安装有问题,卸了重装就好了,我他妈也不知道为什么,你离成功只差一遍重装)
CSRedis于2016年开始支持.NETCore一直跌代至今,实现了低门槛、高性能,和分区高级玩法的.NETCore redis-cli SDK;
下面是封装的访问代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary; using System.Collections;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using CSRedis; namespace DateCore.Utils
{
public class CSredisHelper
{
//var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=13,poolsize=50,ssl=false,writeBuffer=10240,prefix=key前辍"); private static string connection = Convert.ToString(AppConfigurtaionServices.Configuration["redis:Url"]);
private static int port = Convert.ToInt32(AppConfigurtaionServices.Configuration["redis:port"]); private static CSRedisClient redisClient = new CSRedisClient(connection + ":" + port+ "defaultDatabase=0,poolsize=50,ssl=false,writeBuffer=10240,prefix=key前辍"); /// <summary>
/// 增加/修改 如果保存的是对象或数组,序列化后保存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool SetValue<T>(string key, T value)
{ Type type = typeof(T);
if (type != typeof(String) && (type.IsClass || type.IsArray))
{ //String是特殊的引用类型,我也很难受 var str = JsonConvert.SerializeObject(value);
return redisClient.Set(key, str);//, TimeSpan.FromMinutes(1)
}
else //
{ return redisClient.Set(key, Convert.ToString(value));
} } public bool SetHashValue(string key, string field, string value)
{ return redisClient.HSet(key, field, value); }
public string GetHashValue(string key, string field)
{
return redisClient.HGet(key, field);
} /// <summary>
/// 查询 获取对象或数组
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public T GetValue<T>(string key)
{
Type type = typeof(T);
T result = default(T);
var value = redisClient.Get(key);
result = JsonConvert.DeserializeObject<T>(value);
return result; }
//泛型获取基本类型,像int,decimal
public T GetStringValue<T>(string key)
{ return redisClient.Get<T>(key);
} /// <summary>
/// 释放资源
/// </summary>
/// <param name="key"></param>
/// <returns></returns> public void dispose()
{ redisClient.Dispose(); }
///删除所有分区的所有数据库数据
public void Deleteall()
{
redisClient.NodesServerManager.FlushAll();
}
}
}
访问方法:
namespace DateCore.Repository
{
public class BeginT : IBeginT
{ private static CSredisHelper Redis = new CSredisHelper();
public void Test()
{ Redis.SetValue<string>("TruckDownSchedule", "test");
Redis.SetValue<int>("int", );
Redis.GetStringValue<string>("TruckDownSchedule");
Redis.GetStringValue<int>("int"); }
}
}
具体使用方法请参考以下路径:https://github.com/2881099/csredis
参考文档:http://www.cnblogs.com/kellynic/p/9803314.html
只是因为分享而传播,我因为您的点赞而快乐。
.net core 使用windows版redis的更多相关文章
- MS Open Tech 技术团队构建可靠的Windows版Redis
可靠的Windows版Redis 副标题: 评论更精彩,教你怎么解决64位Windows版Redis狂占C盘的问题. MS Open Tech 技术团队最近花了很多时间来测试最新构建的Windows版 ...
- 硬盘杀手!Windows版Redis疯狂占用C盘空间!
关键词:Redis占用C盘,Windows Redis,64位Windows版Redis疯狂占用C盘空间,redis启动后创建RedisQFolk_****.dat文件.redis-server.ex ...
- 硬盘杀手!Windows版Redis疯狂占用C盘空间【转】
[问题的原因] Windows版Redis启动后,会在C盘自动创建一个很大的文件,C:\Users\{你的用户名}\AppData\Local\Redis\RedisQFolk_****.dat 我们 ...
- Windows版Redis如何使用?(单机)
使用Windows版Redis 1.下载Windows版本的Redis 2.在redis目录里创建redis.conf ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- 可靠的Windows版Redis
副标题: 评论更精彩,教你怎么解决64位Windows版Redis狂占C盘的问题. MS Open Tech 技术团队近期花了非常多时间来測试最新构建的Windows版Redis(可在 MS Open ...
- 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包
Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 ...
- 下载安装windows版Redis
链接 https://github.com/MicrosoftArchive/redis/releases 选择版本下载 在redis目录打开cmd命令输入 redis-server.ex ...
- Windows版Redis主从配置
一.下载 从github上下载Redis的zip包,地址:https://github.com/MicrosoftArchive/redis/releases Redis本身不支持windows,这是 ...
- windows版redis报错:本地计算机上的Redis服务启动后停止
解决 1.如果需要临时启动Redis 使用命令:redis-server.exe redis.windows.conf --maxheap 200m 说明:200m是指定最大堆内存是200m, ...
随机推荐
- 20165302 实验一 java开发环境的熟悉
20165302实验一 java开发环境的熟悉 一,实验内容与步骤 1.命令行下java程序开发 ①待编译运行代码 package csj; import java.util.Scanner; pub ...
- EasyUI Calendar 日历插件,只显示年月。
从别人的博客园搬过来的,放在这里只是为了方便自己用.已经注明原文出处,尊重别人的劳动成果. 原文地址:http://www.cnblogs.com/hmYao/p/5779463.html 此日历插件 ...
- 搞懂JVM类加载机制
有这样一道面试题: class Singleton{ private static Singleton singleton = new Singleton(); public static int v ...
- Dubbo实践(十二)Refer
Spring在启动Dubbo客户端应用时,会实例化ReferenceBean<T>并设置配置属性,然后调用ReferenceConfig中的get方法: public synchroniz ...
- Dubbo实践(五)扩展Spring Schema
先回顾Dubbo实践(一)中定义的dubbo-provider.xml: <?xml version="1.0" encoding="UTF-8"?> ...
- disconf实践(四)基于注解的分布式配置文件管理,自动reload
上一篇讲解了基于xml的自动reload的分布式配置文件管理,这一篇讲解基于注解的自动reload的方式(基于disconf实践二). 1. 修改spring配置文件 <?xml version ...
- PAT——1053. 住房空置率
在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给定的阈值e,则该住房为“可能空置”: 若观察期超过某 ...
- [LuoguP2158][SDOI2008]仪仗队
[LuoguP2158][SDOI2008]仪仗队(Link) 现在你有一个\(N \times N\)的矩阵,求你站在\((1,1)\)点能看到的点的总数. 很简洁的题面. 这道题看起来很难,但是稍 ...
- VB.NET & Visual Basic
当看到VB.NET者这本书籍的时候,翻开文件夹唯一的感受就是:这不和VB一样吗?究竟有什么差别呢? 1)版本号: 又一次回想VB,能够发现事实上他是Microsoft退出的基于Windows操作系统环 ...
- JS模拟Dictionary
function Map() { this.keys = new Array(); this.data = new Array(); //添加键值对 this.set = function (key, ...