在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题
Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少了和关系型数据库(如SqlServer/My Sql等)之间的交互,程序的响应速度也大大提升。
C#利用ServiceStack.Redis来操作Redis,它是Redis官方推荐的C#客户端,性能非常优越,使用也很方便,但是我最近在使用这个工具的时候碰到两个问题:
1、每小时只能访问Redis 6000次
2、用 GetById 方法获取不到对象。
第一个问题一开始本地测试的时候并没有发现,因为我们的数据量小,每小时访问Redis次数也少,但是到了服务器上发现老是报这个错误:
The free-quota limit on ‘6000 Redis requests per hour‘ has been reached. Please see https://servicestack.net to upgrade to a commercial license.
在ServiceStack的官网(https://servicestack.net/download)上看到了关于这个错误的说明:原来ServiceStack v4版本已经逐渐商业化了,普通版每小时只能访问Redis 6000次,要取消这个限制就要付费或者您也可以往回使用V3版本。
在 https://servicestack.net/download 页面的最下方。
Free Quotas
Whilst ServiceStack v4 is a commercially-supported product, we also allow free usage for small projects and evaluation purposes.
The nuget packages above include the quota's below which can be unlocked with a license key:
10 Operations in ServiceStack (i.e. Request DTOs)
10 Tables in OrmLite
20 Different Types in JSON, JSV and CSV Serializers *
20 Different Types in Redis Client Typed APIs
6000 requests per hour with the Redis Client
* These quotas are lifted in ServiceStack.Client generic service clients allowing un-restricted access when consuming ServiceStack services.
解决办法:
可以使用另外一个性能不错的StackExchange.Redis或者使用低于4的ServiceStack.Redis版本。
StackExchange.Redis下载地址:
https://github.com/StackExchange/StackExchange.Redis
低版本的ServiceStack.Redis下载地址:
https://github.com/ServiceStackV3/ServiceStackV3
在VS中使用NuGet程序包管理器控制台主机版本,安装ServiceStack.Redis版本:
- PM> Install-Package ServiceStack -Version 3.9.71
第二个问题是我的一个疏忽导致的。之前声明实体类,Id字段我都是大写 I 小写d,但这次我两个字母都大写了:ID。结果我用下面这段代码怎么都获取不到想要的对象:
- using(RedisClient redisClient = new RedisClient(ip, port))
- {
- var redisUsers = redisClient.As<User>();
- User userInRedis = redisUsers.GetById();//这里的5是外面传入的参数,放在这里只是为了说明当时的情形
- }
明明我已经往Redis中存入了ID为5的User,而且我把Redis中所有的User对象都取出来后也确实能找到它, 但直接通过GetById却怎么都找不到,当时百思不得其解,后来实在没辙了就试试把ID改为Id,然后重新存入再读取,结果取出来了。。。真是无语,看 来实体类的Id属性必须和方法 GetById 相对应才行。
在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题的更多相关文章
- .Net使用Redis详解之ServiceStack.Redis(七) 转载https://www.cnblogs.com/knowledgesea/p/5032101.html
.Net使用Redis详解之ServiceStack.Redis(七) 序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现 ...
- .Net使用Redis详解之ServiceStack.Redis(7)
Net使用Redis详解之ServiceStack.Redis(七) 序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中 ...
- .Net使用Redis详解之ServiceStack.Redis(七)
序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...
- .Net使用Redis详解之ServiceStack.Redis
序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...
- .NET平台下Redis使用(三)【ServiceStack.Redis学习】
MVC4项目下对redis进行增删该查 Models文件下实体类: public class Book { public string BookName {get;set;} public strin ...
- ServiceStack.Redis订阅发布服务的调用(Z)
1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ...
- ServiceStack.Redis订阅发布服务的调用
1.Redis订阅发布介绍 Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式. 发布者和订阅者之间使用频 ...
- 『性能』ServiceStack.Redis 和 StackExchange.Redis 性能比较
背景 近来,需要用到 Redis 这类缓存技术 —— MongoDB 和 Redis 没有进行过比较. 我也懒得在这些细节上 纠结那么多 —— 按照网友给出的文章,听从网友建议,选择 Redis. R ...
- ServiceStack.Redis 使用
Redis官网提供了很多开源的C#客户端.例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等.其中ServiceStack.Redis应该算是比 ...
随机推荐
- hadoop常用基础命令
1.日志查询: 用户可使用以下命令在指定路径下查看历史日志汇总$ bin/hadoop job -history output-dir 这条命令会显示作业的细节信息,失败和终止的任务细节. 关于作业的 ...
- 多进程和atexit清理函数
前言: 最近帮朋友review其模块服务代码, 使用的是python的twisted网络框架. 鉴于之前并没有使用过, 于是决定好好研究一番. 不过这个问题, 和twisted网络框架本身没有关系, ...
- Y_TEXT001-(保存长文本)
DATA: gs_header TYPE thead .DATA: gt_ltxts TYPE STANDARD TABLE OF tline .DATA: lw_ltxt TYPE tline . ...
- SAP 默认的连接端口
3708.3908.4008.32<instance number> 如instance number是00的话,就是3200,这是给 disp+working process 用的. 3 ...
- C++ Primer :第十章 :泛型算法之再探迭代器以及其他算法
除了为每个容器定义的迭代器之外,标准库在头文件<iterator>还定义了额外集中迭代器, 包括: 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素. 流迭代器, 这些迭 ...
- JavaWeb学习记录(六)——用户登录功能
使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...
- ntpdate:no server suitable for synchronization found
Question: 在使用ntpdate同步时间时,出现了no server suitable for synchronization found的报错. 通过ntpdate -d s2m.time. ...
- centos 6.4/redhat 6.4 安装gitlab
一,把所有包升级到最新版本 yum -y upgrade 二,安装最新版ruby 2.1.5 步骤http://my.oschina.net/duolus/blog/348353 三,安装官方给出的o ...
- 关于usr/bin/ld: cannot find -lxxx问题总结
/usr/bin/ld: cannot find -lxxx问题总结 linux下编译应用程序常常会出现如下错误: /usr/bin/ld: cannot find -lxxx ...
- HtmlEncode、HtmlDecode、UrlEncode、UrlDecode
HtmlEncode: 将 Html 源文件中不允许出现的字符进行编码.例如:"<".">"."&" 等. HtmlDe ...