高性能网站架构设计之缓存篇(2)- Redis C#客户端
在上一篇中我简单的介绍了如何利用redis自带的客户端连接server并执行命令来操作它,但是如何在我们做的项目或产品中操作这个强大的内存数据库呢?首先我们来了解一下redis的原理吧。
官方文档上是这样说的:Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。
意思就是 redis的server端和client端是通过TCP/IP协议进行通信的,server默认在6379端口上监听客户端的连接,所以我们只需要通过 TcpClient 类创建一个 client,并主动去连接指定Host的6379端口就可以了。TcpClient 创建一个连接应该还是一件比较容易的事情。可是连上了之后怎么办?那么多的命令难道需要我们一个一个的去实现吗?那是一件多么令人头痛的事情啊,我们还是去找一个现成的吧,这是国人最愿意干的事情。
不用找了,哥给你们列了几个在下面:
| ServiceStack.Redis ★ | Homepage | demisbellot | 这是Miguel De Icaza写的C#客户端的一个增强版分支。 |
| Booksleeve ★ | Homepage | marcgravell | 通过堆交换实现的高性能客户端。 |
| Sider | Homepage | chakrit | .NET4.0提供的简约客户端 |
| TeamDev Redis Client | Repository | TeamDevPerugia | 基于redis-sharp,提供基本通信功能的redis客户端,但是有一些不同的地方。 |
| redis-sharp | Repository | migueldeicaza |
用哪个好呢?我也不知道,那就先试试第一个好了,ServiceStack可是除了不少好作品啊,如ServiceStack.OrmLite、ServiceStack.Text等。
先别急着去下载他,我们先建立个C#工程吧。我的工程建好了,如图:

然后通过NuGet获取ServiceStack.Redis,我这里获取的时4.0版,这个版本的免费版在某些功能上开始有限制了,看来有商业化的趋势。

添加好了,我们就可以直接用了。
打开Program文件,Main方法如下:
1 public static void Main( string[] args )
2 {
3 const string HOST_IP = "127.0.0.1";
4
5 using( var redis = new RedisClient( HOST_IP ) )
6 {
7 redis.FlushAll();
8
9 redis.Set( "testkey001", "testvalue001" );
10
11 var value = redis.Get( "testkey001" );
12
13 Console.WriteLine( value );
14 }
15
16 Console.ReadLine();
17 }
运行一下试试。
我勒个去,出异常了,could not connect to redis Instance at 127.0.0.1:6379,server 忘记打开了。
赶紧去打开终端执行一下 ./redis-server 命令,再运行一下,发现没有返回 testvalue001,而是System.Byte[]。
是的,调用 Get 方法返回的类型就是byte数组,ServiceStack.Redis 提供了另一个 Get 方法的重载,要想返回 string,我们只需要改成这样:
var value = redis.Get<string>( "testkey001" );
这次返回的结果就没错了。
ServiceStack.Redis 还提供了一系列的其他功能函数,都对应着 Redis 命令,整个 API 的命令还是比较规范的,一看方法名就能大致明白是什么意思,风格非常的 restful。
关于其他函数的功能,我也不想一一列举了,网上一搜一大把,这些放一个连接供大家参考。
下一篇我将为大家介绍 Redis 的配置。
高性能网站架构设计之缓存篇(2)- Redis C#客户端的更多相关文章
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器节 ...
- 高性能网站架构设计之缓存篇(4)- Redis 主从复制
Redis 的主从复制配置非常容易,但我们先来了解一下它的一些特性. redis 使用异步复制.从 redis 2.8 开始,slave 也会周期性的告诉 master 现在的数据量.可能只是个机制, ...
- 高性能网站架构设计之缓存篇(1)- Redis C#客户端
一.什么 RedisREmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包括 ...
- 高性能网站架构设计之缓存篇(6)- Redis 集群(中)
昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...
- 高性能网站架构设计之缓存篇(1)- Redis的安装与使用
一.什么 Redis REmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包 ...
- 高性能网站架构设计之缓存篇(3)- Redis 的配置
我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线 ...
- ASP.NET 构建高性能网站 架构设计
Web前端系统 为了达到不同应用的服务器共享.避免单点故障.集中管理.统一配置等目的,不以应用划分服 务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过 ...
- (转)高性能网站架构之缓存篇—Redis集群搭建
看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...
- 【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇
上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析. 这篇主要讲如何从零做iOS应用架构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 ...
随机推荐
- MySQL binlog基本操作
常用操作: 1. 设置启用binlog log-bin = binlog 2. 设置全备和增量备份 #crontab -e * 0 * * 7 /usr/bin/mysqldump mybinlog ...
- RFC2119:表示要求的动词(转)
RFC(Request For Comments)指的关于互联网标准的正式文件,它们的内容必须写得非常清楚. 表达的时候,必须严格区分哪些是"建议"(suggestion),哪些是 ...
- IIS 7 Web服务器上部署ASP.NET网站(转)
IIS 7 Web服务器上部署ASP.NET网站小记 摘自:http://swanmsg.blog.sohu.com/162111073.html 网上查找了很久关于iis7配置asp.net配置问题 ...
- DIV页面布局,开局代码
DIV页面布局,开局代码 主要是style部分和body部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- DDD领域驱动设计基本理论知识总结
领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...
- iOS:小技巧(转)
记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: 1 2 UIWindow * window=[[[UIApplication sharedApplicat ...
- 手动获取酷我Mp3外链
素材→http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_随便找一首歌http://www.kuwo.cn/yinyue/1034 ...
- second class
nothing no very good. 1.look at shuruo.html,after display:inline-block; li's width as the content; S ...
- 百度地图开发 Android版应用Key申请
一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/apiconsole/key,自己自行注册一个百度账号, ...
- C++面试中关于sizeof问题总结
原文:http://blog.sina.com.cn/s/blog_7c983ca60100yfdv.html#SinaEditor_Temp_FontName (1) sizeof是操作符 ...