None = 0;	//默认
HighPriority = 1;	//不用了,废弃
FireAndForget = 2; //对结果不感兴趣,调用者将会立即收到默认值
PreferMaster = 0; //如果主服务器可用,则应在主服务器上执行此操作,但可以执行读操作
DemandMaster = 4; //此操作只应在[主站]上执行
PreferSlave = 8;	//如果可用,则应在[从站]上执行此操作,但将在其上执行
DemandSlave = 12;	//此操作只应在[从站]上执行。 仅适用于读取操作。
NoRedirect = 64;	//表示由于ASK或MOVED响应,不应将此操作转发到其他服务器
NoScriptCache = 512 //表示与脚本相关的操作应使用EVAL,而不是SCRIPT LOAD + EVALSHA

一般都使用默认值就可以,如果对性能有特殊的要求则可以分类处理,比如说读操作使用在从服务器上执行。写操作使用主服务器。如果对结果不敢兴趣可以使用FireAndForget, 效率非常高。

二、When 枚举

Always: 一直
Exists: 当key 存在时才生效
NotExists; 当key 不存在时才生效

三、RedisKey 结构

表示redis的键,实质是string
可以隐式装换为 stringbyte[],并重写了与两者的比较。
Apend 方法 追加
Prepend 方法 追加到

四、RedisValue 结构

表示redis的值,实质是string 这个很重要比如说两个数字相加是字符串相加,不是数值相加
可以隐士转换为stringbyte[] ,int long 等整数型
Box 装箱
UnBox 拆箱

isInteger 属性,这个特别注意,所有从redis读取出来的值都是FALSE,他表示的是原始值是否是int,redis中都是string存储。所以都是false
IsNull 是否是null
isNullOrEmptynull 或者是空字符串
HasValue 除上面三个之外的都是True

五、HashEntry 结构

用来表示从redishash数据中读取键值对
NameValue都是RedisValue类型

var keyName = "stringTest"; var configInfo = "name,13598871354"; var aa = SaveRedis(keyName, configInfo); 一、并发工具类的坑 程序运行在 Tomcat 中,执行程序的线程是 Tomcat 的工作线程,而 Tomcat 的工作线程是基于线程池的(因为线程的创建比较昂贵,所以 Web 服务器往往会使用线程池来处理请求)。顾名思义,线程池会重用固定的几个线程,一旦线程重用,那么很可能首次从 ThreadLocal 获取的值是之前其他用户的请求遗留的值。这时,ThreadLocal 中的用户信息就是其他用户的信息。 解决办法: 使用类似 ThreadLocal 工具来存放一些数据时,需要特别注意在代码运行完后, 1、安装 StackExchange.Redis 在 NuGet 中搜索 StackExchange.Redis 和 Newtonsoft.Json,直接点击按钮安装即可。 StackExchange.Redis 是 C# 操作 Redis 数据库的客户端。 Newtonsoft.Json 用来序列化 Josn 字符串及反序列化拿到对象。 2、引用及初始化 using StackExchange.Redis; using Newtonsoft.Json; 初始化 redis HighPriority = 1; //不用了,废弃 FireAndForget = 2; //对结果不感兴趣,调用者将会立即收到默认值 PreferMaster = 0; //如果主服务器可用,则应在主服务器上执行此操作,但可以执行读操作 DemandMaster = 4; //此操作只应在[主站]上执行 Pre... StackExchange.Redis是一款免费的操作Redis的客户端工具,我们使用这个库来简单的学习下Redis的一些基本操作 Redis默认安装好后的端口是6379 密码可以自己设置,使用命令修改 config get requirepass //获取当前密码 config set requirepass "yourpassword"//设置当前密码 代码里需引用StackExch... Redis简介 继续往后推进,最近在学习redis的基本数据结构,首先在磁盘中的寻址空间为ms级别,而在内存中为ns级别,所以磁盘比内存在寻址上满了10W倍,也就是为什么mysql关系型数据库比NOSQL查询数据慢的原因之一。在MYSQL中,数据和索引都存储在硬盘中,真正查的时候要在内存中准备一个B+树(树干),把磁盘读到内存,再返回磁盘,再往下一级读进内存,最终找到记录。最终目的减少IO。 但是随着数 此文章为数据结构的开篇,相当于对数据结构以后的学习做了铺垫,主要讲解了interfaces中的两个接口——Collection和Map的使用及具体实例以及如何实现classes。在文章的最后还为大家总结了数据结构学习的所有知识点,如果有刚开始学习数据结构的同学可以好好的看看此片文章,相信对你们会有很大的帮助!!! public static ConnectionMultiplexer RedisConnection; public static IDatabase RedisCacheDb; protected void Session_Start(object sender, EventArgs s) string Re... StackExchange.Redis中的中心对象是名称空间中的ConnectionMultiplexer类StackExchange.Redis。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer功能很多,因此可以在调用方之间共享和重用它。您不应该创建ConnectionMultiplexer每个操作。它是完全线程安全的,并且可以用于此用途。在所有后续示例中,将假定您已ConnectionMultiplexer保存一个实例以供重用。但是现在,让我们创建一个。这可以   问:请简单介绍下StackExchangeStack Overflow。   答:我们最早设立的是Stack Overflow,即一个供程序员互相解答编程问题的问答网站,随后我们试图将同样的技术推广到编程之外的领域,比如说烹饪、摄影等等,每个主题的问答站点就都称为StackExchange,合起来也就是StackE... 1、最简单的配置var conn = ConnectionMultiplexer.Connect("localhost");在不指定端口号的情况下,默认6379端口;附加选项只是简单的附件(逗号分隔)。端口常用冒号(:)表示。例如var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");通... 键、值以及通道在对待Redis时候,键和其他的事物之间有个相当重要的区别。键是在数据库中一段数据的唯一标识(可能String,List,Hash或者其他的Redis数据类型)。键是没有任何实质意义,就是一个简单的名字。进一步说:当处理集群或者分片系统时,它就是定义在包含数据的节点上的Key,所以对于命令传送来说key是至关重要的。值是相对于键来存储的。要么是单个(String数据)要么一组组的。值不 Keys, Values and Channels 在使用redis的过程中,要注意到 key 和 everthing else 有很大不同.一个key是在同一个数据库当中一个数据片段(可能是String、List、Hash,或者其他的redis数据类型)所特有的名称。key并不会被执行。进一步来说,在使用集群或者其他的分片系统时,key定义了哪一个节点存储了这个数据。所以key对于 r... 发现用StackExchange.Redis代替收费项目ServiceStack.Redis是个不错的选择,只有一个dll,并且代码开源,很不错。 代码只做简单演示用StackExchange.Redis操作Redis数据库。 测试写入100万个key用时43秒。