在上一篇中我简单的介绍了如何利用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. Bootstrap 模态框 + iframe > 打开子页面 > 数据传输/关闭模态框

    父页面bootstrap模态框: <div class="modal fade" id="myModal" tabindex="-1" ...

  2. 游标的使用之压缩数据库Log文件

    declare @databasename nvarchar(100)--定义游标以及赋值 获取所有Online的Database Namedeclare getDataBaseCursor  cur ...

  3. ss

    110000北京120000天津130000河北140000山西150000内蒙古210000辽宁220000吉林230000黑龙江310000上海320000江苏330000浙江340000安徽35 ...

  4. Linux的学习之路

    linux的安装配置.常用命令: 基本上学习任务: 1.在VMware(9)虚拟机上安装Linux操作系统(安装CentOs操作系统) 2.了解Linux操作系统 3.通过XShell工具操作Linu ...

  5. (python)对象的引用

    对比下列两个例子: 例子1: a=10 b=a a=a+2 print "a=",a,"b=",b 结果:a= 12 b= 10 a+2后,b仍然是10 例子2 ...

  6. 用C语言关于学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体)

    一位数组: #include <stdio.h> #include<string.h> #define N 5 void luru(float s[],int n); void ...

  7. request, session, application辨析(待更新)

    作用域 request < session < application 分析 1. request 只在一次请求中有效,当请求发送变化时,信息将失效. 2. session 在当前一次会话 ...

  8. android 定义 程序 Scheme 接收特定URI开启Activity

    场景:通过浏览器打开URL或者扫描软件扫描URL来启动本地应用 <intent-filter> <category android:name="android.intent ...

  9. Python发布包到Pypi

    本地打包:python setup.py sdist 上传Pypi:python setup.py register sdist upload

  10. 好文推荐系列---------JS模板引擎

    这篇文章写的很清晰,不再赘述,直接上链接:http://www.tuicool.com/articles/aiaqMn