加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

Redis在大数据中的行使能力

发布时间:2018-12-27 12:36:00 所属栏目:移动互联 来源:刘弋
导读:本日将会跟各人接头一些Redis在大数据中的行使,包罗一些Redis的行使能力和其他的一些内容。 一、Redis封装架构讲授 现实上NewLife.Redis是一个完备的Redis协议成果的实现,可是Redis的焦点成果并没有在这内里,而是在NewLife.Core内里。 这里可以打开看一
副问题[/!--empirenews.page--]

本日将会跟各人接头一些Redis在大数据中的行使,包罗一些Redis的行使能力和其他的一些内容。

一、Redis封装架构讲授

现实上NewLife.Redis是一个完备的Redis协议成果的实现,可是Redis的焦点成果并没有在这内里,而是在NewLife.Core内里。

这里可以打开看一下,NewLife.Core内里有一个NewLife.Caching的定名空间,内里有一个Redis类,内里实现了Redis的根基成果;另一个类是RedisClient是Redis的客户端。

Redis的焦点成果就是有这两个类实现,RedisClient代表着Redis客户端对处事器的一个毗连。Redis真正行使的时辰有一个Redis毗连池,内里存放着许多个RedisClient工具。

Redis在大数据中的行使能力

以是我们Redis的封装有两层,一层是NewLife.Core内里的Redis以及RedisClient;另一层就是NewLife.Redis。这内里的FullRedis是对Redis的实现了Redis的全部的高级成果。

这里你也可以以为NewLife.Redis是Redis的一个扩展。

二、Test实例讲授Redis的根基行使

1、实例

打开Program.cs看下代码:

Redis在大数据中的行使能力

这里XTrace.UseConsole();是向节制台输出日记,利便调试行使查察功效。

接下来看第一个例子Test1,详细的我都在代码中举办了注释,各人可以看下:

Redis在大数据中的行使能力

  • Set的时辰,假如是字符串可能字符数据的话,Redis会直接生涯起来(字符串内部机制也是生涯二进制),假如是其他范例,会默认举办json序列化然后再生涯起来。
  • Get的时辰,假如是字符串可能字符数据会直接获取,假如是其他范例会举办json反序列化。
  • Set第三个参数逾期时刻单元是秒。
  • vs调试小能力,按F5可能直接器材栏“启动”会编译整个办理方案会很慢(VS默认),可以选中项目然后右键菜单选择调试->启动新实例,会只编译将会用到的项目,这样对换试来说会快许多。
  • 各人运行调试后可以看到节制台输出的内容:向右的箭头=》是ic.Log=XTrace.Log输出的日记。

Redis在大数据中的行使能力

  • 字典的行使:工具的话,必要把json所有取出来,然后转换成工具,而字典的话,就可以直接取某个字段。
  • 行列是List布局实现的,上游数据太多,下流处理赏罚不外来的时辰,就可以行使这个行列。上游的数据发到行列,然后下流逐步的斲丧。另一个应用,跨说话的协同事变,例如说其他说话实现的措施往行列内里塞数据,然后另一种说话来举办斲丧处理赏罚。这种方法相同MQ的观念,固然有点low,可是也很好用。
  • 荟萃,用的较量多的是用在一个必要准确判定的去重成果。像我们天天有三万万订单,这三万万订单可以有一再。这时辰我想统计下一共有订单,这时辰直接数据库group by是不大也许的,由于数据库平分了十几张表,这里分享个拭魅战履历:
  • 例如说揽收,商家发货了,网点要把件收返来,可是收返来之前网点不知道本身有几多货,这时辰我们做了一个成果,也就是订单会发送到我们公司来。我们会建一个time_site的key的荟萃,并且荟萃自己有去重的成果,并且我们可以很利便的通过set.Count成果来统计数目,当件被揽收往后,我们靠山把这个件从荟萃中Remove掉。然后这个Set中存在的就是网点还没有揽收的件,这时辰通过Count就会知道这个网点本日尚有几多件没有揽收。现实行使中这个数目较量大,由于有几万个网点。
  • Redis中布隆过滤器,去重的,口试的时辰问的较量多。

小履历分享:

  • 数据库中不正当的时刻处理赏罚:判定时刻中的年份是否大于2000年,假如小于2000就以为不正当;风俗大于小于号不习习用便是号,这样可以处理赏罚许多不测的数据;
  • Set的时辰最好指定逾期时刻,防备有些必要删除的数据我们健忘删了;
  • Redis异步只管不消,由于Redis耽误自己很小,或许在100us-200us,再一个就是Redis自己是单线程的,异步使命切换的耗时比收集耗时还要大;
  • List用法:物联网中数据上传,量较量大时,我们可以把这些数据先放在Redis的List中,好比说一秒钟1万条,然后再批量取出来然后批量插入数据库中。这时辰要配置好key,可早年缀+时刻,对已处理赏罚的List可以举办remove移除。

2、压力测试

接下来看第四个例子,我们直接做压力测试,代码如下:

Redis在大数据中的行使能力

运行的功效如下图所示:

Redis在大数据中的行使能力

测试就是举办get,set remove,累加等的操纵。各人可以看到在我本机上轻轻松松的到了六十万,多线程的时辰乃至到了一百多万。

为什么会到达这么高的Ops呢?下面给各人说一下:

  • Bench会分按照线程数分多组举办添编削压力测试;
  • rand参数,是否随机发生key/value;
  • batch批巨细,分批执行读写操纵,借助GetAll/SetAll举办优化。

3、Redis中NB的函数来晋升机能

上面的操纵假如各人都把握了就根基算Redis入门了,接下来举办进阶。假如能全然吃透,差不多就会比别人更胜一筹了。

GetAll()与SetAll()

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读