在使用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应该算是比 ...
随机推荐
- MySQL索引建立与删除
#添加索引alter table 表名 add index 索引名称(列名1, 列名2);alter table 表名 add index 索引名称(列名1, 列名2, 列名3);alter tabl ...
- Eclipse 安装 CDT
最近准备开始重新学C++,先从IDE开始准备起 Ubuntu下安装非常简单: 打开Eclipse: help -> Install new software -> http://down ...
- 阿里云2003服务器VPN搭建[转自阿里云官方论坛]
VPN可以应用在很多方面,很多公司只是拿它接入公司内部网络,但我们做安全的需要的是利用它做跳板上网(还有提高网速).这篇文章主要是针对这种应用来说的,包括公网VPN的配置. 服务器配置 前奏:关闭防火 ...
- 使用labview对kinect进行开发
一.必要工具: LabVIEW 2011 或更高版本 用于Microsoft Kinect的Kinesthesia工具包 - 利兹大学(University of Leeds) 详情参见(先注册ni) ...
- ES6 — 字符串String
ES6对字符串新增了一些函数和操作规范.下面我们来看ES6中对字符串新加的特性. 1.模版字符串 (即用反引号定义的字符串) 传统的字符串拼接通过我们使用'+'号与变量连接.例如: let name= ...
- viewpager中对fragment的操作
XXAdatper xxAdapter = (XXAdatper)viewpager.getAdapter(); XXFragment xxFragment= (XXFragment )adapte ...
- MySQL二进制日志的备份和恢复
二进制日志:记录数据库修改的相关操作,作用是即时点回复,主从复制 可以按时间滚动,也可以按大小滚动 server-id:服务器身份标识 一.二进制文件的删除方法,千万不要手动删除 PURGE BINA ...
- Codeforces Round #112 (Div. 2)
Codeforces Round #112 (Div. 2) C. Another Problem on Strings 题意 给一个01字符串,求包含\(k\)个1的子串个数. 思路 统计字符1的位 ...
- URAL 1176 Hyperchannels(欧拉回路路径)
Hyperchannels Time limit: 1.0 secondMemory limit: 64 MB The Galaxy Empire consists of N planets. Hyp ...
- 归并排序 空间复杂度为O(1)的做法
#include <iostream> #include <cstdlib> using namespace std; void print(int *arr, int sta ...