redics在windows平台下的使用
https://www.cnblogs.com/ding2011/p/4745732.html
一::下载 windows 下的redis: https://github.com/ServiceStack/redis-windows
二:添加客户端的引用
下载连接( https://github.com/mythz/ServiceStack.Redis)
下面该链接中的源码包或dll文件,引入到项目中,并添加如下名空间引用(仅限本文):
using ServiceStack.Common.Extensions;
using ServiceStack.Redis;
using ServiceStack.Redis.Generic;
using ServiceStack.Text;
using ServiceStack.Redis.Support;
三:对redis的基本操作
https://www.cnblogs.com/daizhj/archive/2011/02/17/1956860.html
https://www.cnblogs.com/daxnet/archive/2012/03/16/2400418.html
目前网上有一些链接Redis的C#客户端工具,这里介绍其中也是目前我们企业版产品中所使用的ServiceStackRedis, 链接地址:
https://github.com/mythz/ServiceStack.Redis
下面该链接中的源码包或dll文件,引入到项目中,并添加如下名空间引用(仅限本文):
using ServiceStack.Redis;
using ServiceStack.Redis.Generic;
using ServiceStack.Text;
using ServiceStack.Redis.Support;
注:ServiceStackRedis封装了大量方法和对象,这里只摘有代表性的内容介绍,更多内容参见其官方文档。
声明一个客户端对象:
protected RedisClient Redis = new RedisClient("10.0.4.227", 6379);//redis服务IP和端口
一 .基本KEY/VALUE键值对操作:
1. 添加/获取:
storeMembers.ForEach(x => Redis.AddItemToList("additemtolist", x));
注:也可直接使用AddRangeToList方法将一组数据装入如:
Redis.AddRangeToList("addarrangetolist", storeMembers);
2. 获取数据
members.ForEach(s => Response.Write("<br/>additemtolist :" + s));
3. 获取指定索引位置数据
4. 移除:
list.Clear();//清空
list.Remove("two");//移除指定键值
list.RemoveAt(2);//移除指定索引位置数据
二.存储对象:
{
public long Id { set; get; }
public string UserName { get; set; }
public int Age { get; set; }
}
1.通常方式(底层使用json序列化):
UserInfo userinfo = Redis.Get<UserInfo>("userinfo");
注:当然上面方式也适合于基本类型,如:
int age = Redis.Get<int>("my_age");
2.object序列化方式存储:

bool result = Redis.Set<byte[]>("userinfo", ser.Serialize(new UserInfo() { UserName = "张三", Age = 12 }));
UserInfo userinfo = ser.Deserialize(Redis.Get<byte[]>("userinfo")) as UserInfo;
//也支持列表
Redis.Set<byte[]>("userinfolist_serialize", ser.Serialize(userinfoList));
List<UserInfo> userList = ser.Deserialize(Redis.Get<byte[]>("userinfolist_serialize")) as List<UserInfo>;

需要说明的是在测试过程中发现JSON序列化的效率要比object序列化高一些。
三.存储表格对象,比如:

{
redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName = "daizhj", Age = 12 });
redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName = "daizhenjun", Age = 13 });
var allUsers = redisUsers.GetAll();//就像操作ado对象一样,可以进行CRUD等操作
allUsers.ForEach(s => Response.Write("<br/>user :" + s.UserName + " age:" + s.Age));
}

四.使用客户端链接池模式提升链接速度:

{
//支持读写分离,均衡负载
return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize = 5,//“写”链接池链接数
MaxReadPoolSize = 5,//“写”链接池链接数
AutoStart = true,
});
}

声明链接池对象(这里只使用一个redis服务端):
List<UserInfo> userinfoList = new List<UserInfo>();
userinfoList.Add(new UserInfo() { UserName = "pool_daizhj", Age = 1 });
userinfoList.Add(new UserInfo() { UserName = "pool_daizhj1", Age = 2 });
从池中获取一个链接:
{
Redis.Set("userinfolist", userinfoList);
List<UserInfo> userList = Redis.Get<List<UserInfo>>("userinfolist");
}
注:
1.前三种方式我在本地测试发现存取效率从高到底,具体原因还待分析。
2.如只想使用长链接而不是链接池的话,可以直接将下面对象用static方式声明即可:
protected static RedisClient Redis = new RedisClient("10.0.4.227", 6379);
这样在redis服务端显示只有一个客户链接
3.与memcached测试过程中发现,在存储时两者效率接近(使用本文第一种方式),在取数据时memcached速度比redis要快一些(毫秒级差异),这一点并不像网上一些文章所说的那样,看来在实际开发和生产环境下还要以使用背景及结果为准。
测试代码下载链接:
/Files/daizhj/Redis.Sample.rar
redics在windows平台下的使用的更多相关文章
- Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- windows平台下基于VisualStudio的Clang安装和配置
LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...
- Windows平台下的读写锁
Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...
- [转]Windows平台下安装Hadoop
1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...
- MongoDB学习总结(一) —— Windows平台下安装
> 基本概念 MongoDB是一个基于分布式文件存储的开源数据库系统,皆在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB将数据存储为一个文档,数据结构由键值key=>val ...
- windows平台下基于QT和OpenCV搭建图像处理平台
在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...
- Windows平台下的内存泄漏检测
在C/C++中内存泄漏是一个不可避免的问题,很多新手甚至有许多老手也会犯这样的错误,下面说明一下在windows平台下如何检测内存泄漏. 在windows平台下内存泄漏检测的原理大致如下. 1. 在分 ...
- 不同WINDOWS平台下磁盘逻辑扇区的直接读写
不同WINDOWS平台下磁盘逻辑扇区的直接读写 关键字:VWIN32.中断.DeviceIoControl 一.概述 在DOS操作系统下,通过BIOS的INT13.DOS的INT25(绝对读).INT ...
- Spotlight on Mysql在Windows平台下的安装及使用简介
Spotlight on Mysql在Windows平台下的安装及使用简介 by:授客 QQ:1033553122 1. 测试环境 Win7 64位 mysql-connector-odbc- ...
随机推荐
- SwipeRefreshLayout,用最少的代码定制最美的上下拉刷新样式
下拉刷新框架其实有很多,而且质量都比较高.但是在日常开发中,每一款产品都会有一套自己独特的一套刷新样式.相信有很多小伙伴在个性化定制中都或多或少的遇到过麻烦.今天我就给大家推荐一个在定制方面很出彩的一 ...
- Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较
.Net 4.5 WebSocket Server Running on Windows 7? Net 4.5 WebSocket Server 可以运行在 Windows 7,但是Net 4.5的 ...
- Confluence 6 配置服务器基础地址示例
如果 Confluence 的安装是没有安装在非根目录路径(这个是上下文路径),然后服务器基础 URL 地址应该包括上下文地址.例如,你的 Confluence 正在运行在下面的地址: http:// ...
- VMware安装windows10系统
- 用flask实现的添加后保留原url搜索条件
1.具体实现 #!usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask,render_template,request,r ...
- java----重载
重载: //同一个类中,方法名相同,参数列表不同[java就是靠不同的参数列表来寻找方法的],返回值可以任意,注意和函数的返回值类型相同.public class Demo { public stat ...
- Mysql 查看连接数,状态 最大并发数
show status like '%max_connections%'; ##mysql最大连接数set global max_connections=1000 ##重新设置show variabl ...
- Tomcat使用
打开Tomcat官网 在浏览器地址栏输入: tomcat.apache.org,按回车 下载Tomcat 把目光移动至网页左边红匡处,点击Tomcat8 网页下移 点击箭头所指的链接 运行Tomcat ...
- windows解压.tar00文件
通常是单个文件太大分拆出来的,例如data.tar00, data.tar01, data.tar02等 cmd命令行进入几个tar0x文件所在目录,执行: copy /b data.tar0* da ...
- base | Thread类、ThreadData结构体 、CurrentThread命名空间
__thread __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比.__thread变量每一个线程有一份独立实体,各个线程的值互不干扰.可以用来修饰那些带有全局性且值可能变, ...