在上一篇中我简单的介绍了如何利用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. redirect和forward

    1.重定向 <mvc:view-controller path="/" view-name="redirect:/admin/index"/>即如果 ...

  2. oracle,sqlserver同一个表两个字段和成一个列查询 (详询请加qq:2085920154)

    sql 同一张表开两个字段合成一个字段 例如   SQL tab 字段1 字段2 字段3 3 4 莫 合成 tab 字段1 字段2 3-4 莫     SQL SERVER select 字段1 + ...

  3. [linux] 默认权限修改(umask)

    1 文件默认权限 对于目录,默认权限=777-umask 对于文件,默认权限=666-umask(文件默认无执行权限) 默认权限修改: vim /etc/bashrc 71行是普通用户的更改,73是超 ...

  4. Jquery一般操作归纳

    一.DOM操作分类    1.DOM Core  getElement(s)获得元素        2.HTML-DOM  document.对象/操作标签的属性        3.CSS-DOM   ...

  5. PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天

    PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数    1  构造  2  析构   3  赋值  4 拷贝构造  5 oper ...

  6. Android Webview 调用JS跳转到指定activity

    JAVA: WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save ...

  7. cut笔记

    cut -f 2,3 file.txt                                #查看第2.3列的信息,列分隔符默认为空格符 指定分隔符使用-d选项,如: cut -f 2,3 ...

  8. Java File创建新目录和文件

    创建目录 当不存在目录aa文件夹时: File file1=new File("/aa"); Boolean aa=file.mkdir();// true File file1= ...

  9. 京东2017校园招聘笔试题 【第K个幸运数】

    题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...

  10. 解决ORA-00824: cannot set sga_target due to existing

    今天Linux服务器机子重启了下,Oracle启动不起来,提示:解决ORA-00824: cannot set sga_target due to existing 看了很多解决方法,发现下面这个特别 ...