在上一篇中我简单的介绍了如何利用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#客户端的更多相关文章

  1. 高性能网站架构设计之缓存篇(5)- Redis 集群(上)

    集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器节 ...

  2. 高性能网站架构设计之缓存篇(4)- Redis 主从复制

    Redis 的主从复制配置非常容易,但我们先来了解一下它的一些特性. redis 使用异步复制.从 redis 2.8 开始,slave 也会周期性的告诉 master 现在的数据量.可能只是个机制, ...

  3. 高性能网站架构设计之缓存篇(1)- Redis C#客户端

    一.什么 RedisREmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包括 ...

  4. 高性能网站架构设计之缓存篇(6)- Redis 集群(中)

    昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...

  5. 高性能网站架构设计之缓存篇(1)- Redis的安装与使用

    一.什么 Redis REmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包 ...

  6. 高性能网站架构设计之缓存篇(3)- Redis 的配置

    我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线 ...

  7. ASP.NET 构建高性能网站 架构设计

    Web前端系统 为了达到不同应用的服务器共享.避免单点故障.集中管理.统一配置等目的,不以应用划分服 务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过 ...

  8. (转)高性能网站架构之缓存篇—Redis集群搭建

    看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...

  9. 【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

    上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析. 这篇主要讲如何从零做iOS应用架构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 ...

随机推荐

  1. export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

    如题,临时修改程序运行时动态库的搜索路径,平时经常会用到,记录之!

  2. Android开发工具全面转向Android Studio(2)——AS project/module的CRUD

    本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...

  3. 随机生成数字(ashx文件,调用上篇所写发送邮件代码)

    public void ProcessRequest(HttpContext context) { //邮件标题 string Email_Title = Dsis.Core.SysCore.PubF ...

  4. 纯CSS实现Tooltip

    DEMO: span{ position:relative; display:inline-block; height:3em; width:3em; margin:0 0.4em; line-hei ...

  5. Quarter square 查找表乘法器,手动建立rom

    建立一个C的范围为0~255,内容是(C)2/4的查表 占用256个存储空间,但可以计算出+-127的两个数之积.传统算法需要至少127×127个存储空间. 查找表模块的建立: module lut_ ...

  6. POJ2632

    #include<stdio.h> #include<string.h> #include<algorithm> #include<cmath> usi ...

  7. Java初学随笔

    背景 狡兔三窟,在使用了近7-8年的C#后,考虑到云化的到来,还是要面向更多的语言与技术,近期决定学习scala,先从Java为跳板,最后达到学会并熟练 使用scala的目的. <核心技术> ...

  8. SQL 订阅发布备注

    单个用户问题 use mastergodeclare @SQL varchar(max)set @SQL=''select @SQL=@SQL+';kill '+RTRIM(spid)from mas ...

  9. iis下设置php最大执行时间

    php在执行中常见错误: The FastCGI process exceeded configured request timeout: FastCGI process exceeded confi ...

  10. css让元素居中显示

    通常在absolute之后, 想让元素居中,都会采用margin-top:-[元素高度的一半]和 margin-left:-[元素宽度的一半] ,  但是当我们的元素宽高不是固定的时候, 这就难办了, ...