ASP.NET Core 2.0下使用Redis——基于CSRedis实现

前几天挖了个坑,今天就来填这个坑了。关于在ASP.NET Core 2.0下使用Redis的问题,目前StackExchange.Redis已经支持.Net Core 2.0了,而微软提供的Microsoft.Extensions.Caching.Redis.Core方法,也是对StackExchange.Redis的一种官方封装,是基于StackExchange.Redis的,但是大家反映StackExchange.Redis在.Net Core下高并发容易出现死锁问题,目前没有解决办法。
本例是基于CSRedis来实现的,CSRedis 是国外大神写的,经过少量修改,现已支持 .NETCore
使用方法,先新建一个Redis缓存的类库,我这里命名为:Biz126.RedisCache,在该类库下新增一个名为RedisHelper的Redis帮助类:

namespace Biz126.RedisCache
{
    public class RedisHelper : CSRedis.QuickHelperBase
    {
        public static IConfigurationRoot Configuration { get; internal set; }
        public static void InitializeConfiguration(IConfigurationRoot cfg)
        {
            Configuration = cfg;
            string ip, pass;
            if (!int.TryParse(Convert.ToString(cfg["Redis:port"]), out int port)) port = 6379;
            if (!int.TryParse(Convert.ToString(cfg["Redis:poolsize"]), out int poolsize)) poolsize = 50;
            if (!int.TryParse(Convert.ToString(cfg["Redis:database"]), out int database)) database = 0;
            ip = Convert.ToString(cfg["Redis:ip"]);
            pass = Convert.ToString(cfg["Redis:pass"]);
            Name = Convert.ToString(cfg["Redis:name"]);
            Instance = new CSRedis.ConnectionPool(ip, port, poolsize);
            Instance.Connected += (s, o) =>
            {
                CSRedis.RedisClient rc = s as CSRedis.RedisClient;
                if (!string.IsNullOrEmpty(pass)) rc.Auth(pass);
                if (database > 0) rc.Select(database);
            };
        }
    }
}

需要添加对Microsoft.Extensions.Configuration的引用。

在主项目下,引用该类库,打开Startup文件,把之前的构造函数换成如下所示:

        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();

            if (env.IsDevelopment())
            {
                // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
                builder.AddApplicationInsightsSettings(developerMode: true);
            }
            Configuration = builder.Build();
            RedisHelper.InitializeConfiguration(Configuration);          //Redis  
        }

同时之前的Configuration属性,也需要对应的修改,换成IConfigurationRoot类型,就可以了:

public IConfigurationRoot Configuration { get; }

以上。

又换域名了

最近这一两年时间,不知为什么,开始喜欢注册域名了,想到一个自己觉得挺不错的而且有没被注的,也不管主流非主流,就想要给注了,当然是学费米。这不,又穷折腾了个域名,也就是现在换的这个,bigger.ee。
现在手里已经有几十个学费米,有便宜的几块钱,也有贵的500多一年,有的是因为一时热血想要注下来做点什么,有的就是因为短,注了之后什么也没做。而想要注下来做点什么的,最终什么也没做,最终所有的域名也都躺在我的dnspod里面,只有一条解析,不知指向何处。
回想起这些年,想做的事实在实在是太多,但是没有一件事是最终行动了的。想法太多,行动太少。
是时候做出一些改变了。

Let's Encrypt 免费泛域名证书(野卡)申请

今天Let's Encrypted泛域名证书终于正式上线,Let's Encrypted提供的泛域名证书跟其之前提供的单域名证书一样,90天续期一次,但是有一点不同的是,其泛域名证书的申请需要通过ACME V2来申请。
官方发布地址:
https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579
支持ACME的客户端:
https://letsencrypt.org/docs/client-options/

使用方法:

1.下载安装ACME.SH

curl https://get.acme.sh | sh

wget -O - https://get.acme.sh | sh

QQ截图20180315221159.png

2.使用

这里分两种方式,第一种是通过DNS进行txt解析,另一种方式是使用域名DNS解析服务商提供的API进行验证签发。

方法一、DNS解析方式签发

/.acme.sh/acme.sh  --issue -d  exmaple.com  -d *.example.com --dns

之后到域名DNS解析,按提示增加一条txt解析。
QQ截图20180315221651.png
待解析生效后,再回到Linux,执行下面语句:

/.acme.sh/acme.sh  --renew -d  exmaple.com  -d *.example.com

QQ截图20180315222041.png
这个图是失败的情况,可能是解析没生效的原因

方法二、使用域名解析服务商API签发

默认支持超过40家域名解析服务商的API,另外还可以自定义API,可以说世界上主流的服务商都已经支持了。国人常用的,如:

CloudFlare 
DNSPod.cn
CloudXNS.com
Aliyun
GoDaddy.com
ClouDNS.net

等。更多服务商,请查看:
https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
下面以DNSPod.cn为例,在树莓派上对dwz.nz这个域名进行签发:
1.打开https://www.dnspod.cn/console/user/security 。查看API Token,创建一个API Token。(这个API很重要请一定要保存)
2.使用API Token

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

3.开始签发

/root/.acme.sh/acme.sh --issue --dns dns_dp -d dwz.nz -d *.dwz.nz

4.签发成功
QQ截图20180315223436.png
5.找到证书,证书位于/root/.acme.sh/dwz.nz
我们只需要用到 fullchain.cer 、dwz.nz.key 这两个文件
QQ截图20180315223743.png

总结:

通过DNS解析验证域名之后签发,和通过域名API进行签发的区别就是,第一种不能自动续签,到期后需要自己手动续签,第二种每60天续签一次。

详细的使用说明请参见官方文档(中文):
https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

找回了曾经丢失了的记忆

昨天晚上心生好奇,想看一下自己的Twitter和Facebook分别是什么时候开始使用的,没能找到注册时间。看了下自己的动态,Twitter是2010年的时候,那时候Twitter在国内已经被屏蔽了,我是委托一个曾经在“首信易支付”工作联系我开通他们商户服务的人帮我开通的,那时候她正好出国留学,而且和她还联系着。而Facebook是我自己注册的,从时间线上看,至少是2006年之后,而且我在时间线上发现了我曾经同步到Facebook上的博文,让我感到很吃惊,有种找到了丢失了的记忆的感觉。
算一下时间,我应该是从2006年的时候就开始写博客了,那时候应该是在bokee上写的,印象中还有其他的博客网站,但是现在已经记不住了。在2007年的时候,我注册了自己的域名dl2008.cn,自己用boblog搭建了个博客,放在免费空间上。
在2007年及之前的时候,非常流行免费空间。还记得那时候用的比较多的几个免费空间,一个是展速,一个是河南常来网,还有主机屋等等。免费空间都有一个特点,就是很不稳定,经常无法访问,数据丢失。而我当时应该是使用了同步插件,每次写完文章,都会自动推送到Facebook上。
再后期,算下时间应该是在2007年4月份,我成为了一个Oneman主机商的一个小代理,也开始了自己的IDC之路,当时使用的域名是24idc.net,而且业务做的非常好,应该是IDC行业的红利期,至少我有零花钱了。但是福兮祸所伏,到当年的10月份的时候,中央开什么会我记不住了,当时全国上下IDC机房严打,关停了很多机房,全国上下一片鸡飞狗跳,也死了一大片站长少了上千万小网站跑了成千上万的Oneman。很不幸的是,我的上级Oneman也跑路了,服务器被关停,老板联系不上。没办法,我从自己的生活费中省出钱来,另外当时认识的一个朋友名字叫郭世顺,他也做IDC,他出了机器,我出少部分钱,把我的客户转移到他那,我才算渡过了当时的难关。
而我的博客在这些年,也换过多次,多到什么程度,连我自己也记不清到底换过多少次每次都是怎么换的,也记不清到底曾经用过多少个域名搬过多少次家用过哪些程序。
只能记得第一个域名是dl2008.cn,而我也是对这个域名最有感情,用了三年,而且直到现在闲置的但依然续着费;还用过5dblog.me,域名注册的比较早,但是当时没有什么域名注册经验,没能注册一个比较经典的域名;还用过lofter.ca和coresky.org,直到现在用的qingtai.org。
而经常颠来倒去换博客程序,带来的最大的问题就是,数据的转换,而且必然会造成数据的丢失。所以,现在的这个博客,我只有2010年之后的文章了。
而昨天在Facebook上,意外的发现了我2007到2009年之间的大部分博文,我非常激动,就像是找到了初恋写给我的情书一样。连夜的把这些博文转载到了这里,就当成是原来博客的延续吧。
看着以前写的博客,就像是看着傻逼写的文章一样,没有任何美感,当然不比现在的差多少,但是还是比现在幼稚的多,毕竟已经过去了十多年了,无论是思想还是经验,都在成长。

(完)

记2018年大连新年登高徒步大会活动

2018年1月1日,参加了大连新年攀新高全民健身活动,而今年大连是作为2018全国新年登高健身大会的分会场。活动地点位于大连金龙寺森林公园,只有906路车能直接到达活动地点。
我像往常上班一样,早晨6点起床,收拾妥当,在6点50分的时候,坐上开往906起点站兰花小区的公交车,大概在7点05分的时候,到达兰花小区。
蒙蒙亮的早晨
蒙蒙亮的早晨

906路车站早早的就有很多人在排队了,基本上都是去参加这次活动的人,这些人里面,大部分都是50岁以上的,我应该是最年轻的了吧。对于老年人参加这类活动,我除了发自内心的钦佩,再无他。
正在排队等待906路公交车的人们
正在排队等待906路公交车的人们

坐上906路车,当然是没座的了,哪怕是有座我也得让给这些老人们,虽然他们身体健硕,但是毕竟我还是年轻人。在车上简单的吃了点早餐,从家里带的两片面包和一盒牛奶。大概50分钟后,到达金龙寺,此时正好早上8点。
下车地点
下车点正好为大连跨境电子商务试验区

IMG_20180101_075507.jpg
公园入口

从公园入口到达公园的大门口,我是从旁边的木栈道走的,冬日的清晨,木栈道上有一层薄薄的霜,走上去有点滑,如果走太快或者不小心,就可能会滑倒。目前是火灾的高发期,在沿途随处可见关于森林防火的标语。
IMG_20180101_075653.jpg
从公园入口去往公园大门口

IMG_20180101_075701.jpg
关于防火的标语

IMG_20180101_075723.jpg
幽幽的木栈道,走着很惬意

到达停车场时,可以看到相关人员在这里设立了一个卡口,不允许车辆再往上面走了,引导车辆停到停车场。在正常开园的时候,车可能是可以开上去吧,我也是第一次来这里,具体不是太了解。
IMG_20180101_084308.jpg
停车场处设立卡口,引导停车

沿着木栈道继续前行,也不要错过沿途的好风景,随手再拍几张。没有带相机,也没有专业的摄影技巧,就看个影吧。
IMG_20180101_080037.jpg
沿途景致

终于到达活动现场,找到自己的领物处,我的编号是D3359,太靠后了,只有背包,没有号牌,不过这也不影响我正常参赛。
IMG_20180101_080155.jpg
到达活动现场

IMG_20180101_081252.png
报名短信

IMG_20180101_081220.jpg
领取的装备

之后便是无聊的等待,和看一些主办方组织的打发时间的活动,另外就是新年寄语。
IMG_20180101_085944.jpg
在祈福墙上留言的情侣

IMG_20180101_082610.jpg
二十中学生表演前的热身

总算要开始了,开始之前,主持人(大连电台的一个主持人,名字我给忘了,没听过她的节目)上台开始主持整个大会。
IMG_20180101_090419.jpg
大会总算开始了,主持人上台开始主持

IMG_20180101_090747.jpg
二十中的学生们表演健身操

IMG_20180101_091203.jpg
某击剑俱乐部表演击剑

IMG_20180101_092345.jpg
领导上台并讲话

在领导讲完话之后,也到了开始时间,发令枪(号)响,正式开始比赛。刚开始的时候非常拥挤,上千人拥进公园的大门,浩浩荡荡的沿着赛道向公园内走去。
IMG_20180101_093034.jpg
开赛后进场

这次大会分两个赛程,一个是半程赛,到知青点后领取完赛证书,之后原路返回;另一个是全程赛,到达知青点之后,领取完赛证书后,继续前行,到达第二个打卡点盖章后,沿赛道往前走,直到终点。
第一阶段非常轻松,因为并没有山坡之类的,我走的很快,超过的人很多。当然,同时我也没忘记拍照。大概在10点04分的时候到达知青点,10点06分领取了完赛证书。之后上了个厕所,耽搁了点时间。
IMG_20180101_093534.jpg
浩荡的队伍

IMG_20180101_093552.jpg
沿途景色

IMG_20180101_093925.jpg
被我超越的人们

IMG_20180101_100408.jpg
知青点

IMG_20180101_100624.jpg
领取完赛证书

如果是半程赛的话,这时候就可以拿着证书到处游山玩水了,而我明显不打算只走个半程赛,那也太对不起我起这么早赶到这么远来的这一趟了,必须走完全程。当时,这时候我也不知道前面的路有多险恶,不过无论前面是怎样的,都要坚持完成,当然也要量力而行,如果感觉到不大行的话,就慢点走。
按着指示牌,前面依次是:孔雀园、五间房、老座山。接下来的第一站应该是孔雀园了,当然很快就到了孔雀园,但是也无心去逗孔雀了,我长的这么丑,也无法让孔雀为我开屏。
IMG_20180101_100652.jpg
指示牌

IMG_20180101_100923.jpg
孔雀园

整个徒步的难点就在这个老座山了,虽然是顺着石板路和台阶走,但是太陡,还要保持速度,由于长时间没有过锻炼,很快就气喘吁吁了,而且感觉血压上升心跳过快顶的头难受。调整了下呼吸,同时把速度保持在了一个自己能承受的范围内,把参赛时领取的饮料拿出来慢慢的喝掉,感觉好多了。在这段路上,我就有一种预感,我可能要拿到名次了。坚持了下去,总算要到山顶了。
IMG_20180101_102006.jpg
艰难登山的人们

IMG_20180101_102352.jpg
山上远眺

IMG_20180101_102754.jpg
马上到山顶了

IMG_20180101_102907.jpg
山上景色

到达山顶之后没做停留,争分投秒下山,很快到达第二个打卡点,在没人打卡的那人那里盖个章,继续前行,第二次打卡时间在10点30分,从知青点到打卡用时20分钟。
IMG_20180101_103025.jpg
下山坡,太轻松

IMG_20180101_103107.jpg
完成第二次打卡的美女

IMG_20180101_103114.jpg
完成第二次打卡

IMG_20180101_103336.jpg
回望走过的路

IMG_20180101_103518.jpg
山中景致

IMG_20180101_103525.jpg
山中景致

后面的就太轻松了,全是下山坡和平路,很快就恢复体力了,而且从第二打卡点之后,人就非常少了,而且距离相差的也挺远,不能像在上坡的时候一下可以超过好几个人,但是一次超过一两个人,要更轻松一点。

IMG_20180101_105231.jpg
快要完成全程赛的老爷子

大概在11点07分,到达终点,名次258名,历时97分钟,得了块我有生一来第一块体育类的奖牌。
最后等到前300名结果出来之后,我们一起合了影。
IMG_20180101_110558.jpg
即将到达终点

IMG_20180101_110932.jpg
奖牌及名次

20180101234617.jpg
获奖者集体合影,看看哪个是我?

之后,又走了大概3公里,去坐的1101路车回的家。
(完)

分类

最新文章

最近回复

  • 老徐: 已经加上了,抱歉才看到
  • 青山: 某种原因,暂停友链,抱歉。
  • 搬瓦工: 朋友 交换链接吗
  • 飞刀说: 名称:飞刀说 描述:...
  • 青山: 计划搬迁到腾讯云,正...
  • 河边的飞刀: 网站名称:飞刀说 网...
  • 老徐: 具体要哪个呢?
  • 老徐: 是不是有点老?
  • 青山: 哇,林志炫
  • 老白: 哇,这改的可以,能不...

归档

标签云

C# .net core asp.net 情感 SQL mongodb sql server EasyUI 安全 激活 linux 身份验证 https typecho .net sql注入 kms MVC IIS 高并发 IE 坑爹 服务器 mysql Oracle Combobox Datagrid 口语 数据抓取

其它