Redis 安装与简单示例

时间:2021-10-27 05:18:18

Redis下载地址如下:https://github.com/dmajkic/redis/downloads

  解压后根据自己机器的实际情况选择32位或者64位。下载解压后图片如下:

  Redis 安装与简单示例

  1. redis-server.exe redis服务器的daemon启动程序
  2. redis.conf redis配置文件
  3. redis-cli.exe redis命令行操作工具。当然,也可以用telnet根据其纯文本协议来操作
  4. redis-check-dump.exe 本地数据库检查
  5. redis-check-aof.exe 更新日志检查
  6. redis-benchmark.exe 性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache的 ab 工具)

  上图中的redis-server.exe为其服务端程序。双击它运行。

  Redis 安装与简单示例

  如果你希望将此服务设置为windows系统服务,下载Redis服务安装软件(https://github.com/rgl/redis/downloads),安装即可。

  安装完成在服务(右击我的电脑--管理--服务和应用程序--服务)中找到此服务,将其设置为自动延迟启动即可。

  Redis 安装与简单示例

  在redis文件夹下,找到redis-cli.exe文件,它就是Redis客户端程序。

  打开输入:set name jerry

  即在Redis中插入了一条key为name,value为jerry的数据,

  继续输入:get name

  得到value保存的数据jerry。

  Redis 安装与简单示例

  使用使用:keys * 可以查询Redis一共保存了多少条数据

  Redis 安装与简单示例

二、在Asp.net中使用Redis

  1、先使用Nuget安装个 C# Redis client for the Redis NoSQL DB。

  Redis 安装与简单示例

  其实就是ServiceStack.Redis,这是官网推荐的C#客户端。

  下面来看看最简单的示例:

Redis 安装与简单示例
public ActionResult Index()
{ RedisClientManagerConfig RedisConfig = new RedisClientManagerConfig();
    RedisConfig.AutoStart = true;
    RedisConfig.MaxReadPoolSize = 60;
    RedisConfig.MaxWritePoolSize = 60;

    PooledRedisClientManager prcm = new PooledRedisClientManager(new List<string>() { "127.0.0.1" }, new List<string>() { "127.0.0.1" }, RedisConfig);

    using (IRedisClient RClient = prcm.GetClient())
    {
        RClient.Add("p", "撼地神牛");
    }
    using (IRedisClient RClient = prcm.GetClient())
    {
        Response.Write(RClient.Get<string>("p"));
    }

    return Content("");
}
Redis 安装与简单示例

   更多关于Redis的操作,建议可以观看红丸的《Redis实战》,以及这个不错的网址:http://redis.readthedocs.org/en/latest/


Redis常用命令速查 <第二篇>

一、Key

  Key命令速查:

命令 说明
DEL 删除给定的一个或多个 key,不存在的 key 会被忽略,返回值:被删除 key 的数量
DUMP 序列化给定 key,返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键
EXISTS 检查给定 key 是否存在
EXPIRE 为给定key设置有效时间,接受时间点
EXPIREAT 为给定key设置有效时间,接受时间戳timestamp
KEYS 查找所有符合给定模式 pattern 的 key;KEYS * 匹配数据库中所有 key;KEYS h?llo 匹配 hello,hallo等。KEYS h[ae]llo匹配hello和hallo
MIGRATE 将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。执行的时候会阻塞进行迁移的两个实例
MOVE 将当前数据库的 key 移动到给定的数据库 db 当中
OBJECT 从内部察看给定 key 的 Redis 对象
PERSIST 移除给定 key 的有效时间
PEXPIRE 以毫秒为单位设置 key 的有效时间
PEXPIREAT 以毫秒为单位设置 key 的有效时间(timespan)
PTTL 以毫秒为单位返回key的剩余有效时间
RANDOMKEY 从当前数据库中随机返回(已使用的)一个key
RENAME 将Key改名
RENAMENX 当且仅当 newkey 不存在时,将 key 改名为 newkey
RESTORE 反序列化给定的序列化值,并将它和给定的 key 关联
SORT 返回或保存给定列表、集合、有序集合 key 中经过排序的元素
TTL 以秒为单位,返回给定 key 的剩余有效时间
TYPE 返回 key 所储存的值的类型
SCAN 增量迭代

 

二、String

  String命令速查:

命令 说明
APPEND 将值追加到指定key的值末尾,如果key不存在,则相当于增加操作。
BITCOUNT 计算给定字符串中,被设置为 1 的Bit位的数量。
BITOP 对一个或多个保存二进制位的字符串 key 进行位元操作
DECR 将 key 中储存的数字值减一。Key不存在,则将值置0,key类型不正确返回一个错误。
DECRBY 将key所储存的值减去指定数量
GET 返回key所关联的字符串值,如果Key储存的值不是字符串类型,返回一个错误。
GETBIT 对key所储存的字符串值,获取指定偏移量上的位
GETRANGE 返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定
GETSET 将给定key的值设为value,并返回key的旧值。非字符串报错。
INCR 将 key 中储存的数字值增一。不能转换为数字则报错。
INCRBY 将key所储存的值加上指定增量
INCRBYFLOAT 为key中所储存的值加上指定的浮点数增量
MGET 返回所有(一个或多个)给定key的值
MSET 同时设置一个或多个key-value对
MSETNX 同时设置一个或多个key-value对,若一个key已被占用,则全部的执行取消。
PSETEX 以毫秒为单位设置 key 的有效时间
SET 将字符串值value关联到key 
SETBIT 对key所储存的字符串值,设置或清除指定偏移量上的位(bit)
SETEX 将值value关联到 key,并将key的有效时间(秒)
SETNX 当key未被使用时,设置为指定值
SETRANGE 用value参数覆写(overwrite)给定key所储存的字符串值,从偏移量 offset 开始
STRLEN 返回key所储存的字符串值的长度

 

三、Hash

  Hash命令速查:

命令 说明
HDEL 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
HEXISTS 查看哈希表 key 中,给定域 field 是否存在
HGET 返回哈希表 key 中给定域 field 的值
HGETALL 返回哈希表 key 中,所有的域和值
HINCRBY 为哈希表 key 中的域 field 的值加上指定增量
HINCRBYFLOAT 为哈希表 key 中的域 field 加上指定的浮点数增量
HKEYS 返回哈希表 key 中的所有域
HLEN 返回哈希表 key 中域的数量
HMGET 返回哈希表 key 中,一个或多个给定域的值
HMSET 同时将多个 field-value (域-值)对设置到哈希表 key 中
HSET 将哈希表 key 中的域 field 的值设为 value
HSETNX 当且仅当域 field 不存在时,将哈希表 key 中的域 field 的值设置为 value
HVALS 返回哈希表 key 中所有域的值
HSCAN 增量迭代

 

四、List

  List命令速查:

命令 说明
BLPOP 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止
BRPOP 与BLPOP同义,弹出位置不同
BRPOPLPUSH 当列表 source 为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时
LINDEX 返回列表 key 中,下标为 index 的元素
LINSERT 将值 value 插入到列表 key 当中
LLEN 返回列表 key 的长度
LPOP 移除并返回列表 key 的头元素
LPUSH 将一个或多个值 value 插入到列表 key 的表头
LPUSHX 将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表
LRANGE 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定
LREM 根据参数 count 的值,移除列表中与参数 value 相等的元素
LSET 将列表 key 下标为 index 的元素的值设置为 value
LTRIM 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
RPOP 移除并返回列表 key 的尾元素
RPOPLPUSH 命令 RPOPLPUSH 在一个原子时间内,执行两个动作:1、将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。2、将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
RPUSH 将一个或多个值 value 插入到列表 key 的表尾
RPUSHX 将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表

 

五、Set

   Set命令速查

命令 说明
SADD 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
SCARD 返回集合 key 的集合中元素的数量
SDIFF 返回一个集合的全部成员,该集合是所有给定集合之间的差集
SDIFFSTORE 这个命令的作用和 SDIFF 类似,但它将结果保存到新集合,而不是简单地返回结果集
SINTER 返回一个集合的全部成员,该集合是所有给定集合的交集
SINTERSTORE 与SINTER类似,不过可以指定保存到新集合
SISMEMBER 判断 member 元素是否集合 key 的成员
SMEMBERS 返回集合 key 中的所有成员
SMOVE 将 member 元素从一个集合移动到另一个集合
SPOP 移除并返回集合中的一个随机元素
SRANDMEMBER 仅仅返回随机元素,而不对集合进行任何改动,与SPOP的区别在于不移除
SREM 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
SUNION 返回一个集合的全部成员,该集合是所有给定集合的并集
SUNIONSTORE SUNION类似,不过可以指定保存到新集合
SSCAN 增量迭代

 

六、SortedSet

   SortedSet命令速查:

命令 说明
ZADD 将一个或多个 member 元素及其 score 值加入到有序集 key 当中
ZCARD 返回有序集 key 的基数
ZCOUNT 返回有序集 key 中, score 值在 min 和 max 之间(包括 score 值等于 min 或 max )的成员的数量
ZINCRBY 为有序集 key 的成员 member 的 score 值加上指定增量
ZRANGE 返回有序集 key 中,指定区间内的成员(小到大排列)
ZRANGEBYSCORE 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员
ZRANK 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列
ZREM 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略
ZREMRANGEBYRANK 移除有序集 key 中,指定排名(rank)区间内的所有成员
ZREMRANGEBYSCORE 移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员
ZREVRANGE 返回有序集 key 中,指定区间内的成员,成员位置按score大到小排列
ZREVRANGEBYSCORE 返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。成员按 score 值递减(从大到小)排列
ZREVRANK 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序
ZSCORE 返回有序集 key 中,成员 member 的 score 值
ZUNIONSTORE 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到新集合
ZINTERSTORE 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到新集合
ZSCAN 增量迭代

 

七、Pub/Sub

  Pub/Sub命令速查:

命令 说明
PSUBSCRIBE 订阅一个或多个符合给定模式的频道
PUBLISH 将信息 message 发送到指定的频道
PUBSUB PUBSUB 是一个查看订阅与发布系统状态的内省命令
PUNSUBSCRIBE 指示客户端退订所有给定模式
SUBSCRIBE 订阅给定的一个或多个频道的信息
UNSUBSCRIBE 指示客户端退订给定的频道

 

八、Transaction

  Transaction命令速查:

命令 说明
DISCARD 取消事务,放弃执行事务块内的所有命令
EXEC 执行所有事务块内的命令
MULTI 标记一个事务块的开始
UNWATCH 取消 WATCH 命令对所有 key 的监视
WATCH 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

 

九、Script

  script命令速查:

命令 说明
EVAL 通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值
EVALSHA 根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值
SCRIPT EXISTS 给定一个或多个脚本的 SHA1 校验和,返回一个包含 0 和 1 的列表,表示校验和所指定的脚本是否已经被保存在缓存当中
SCRIPT FLUSH 清除所有 Lua 脚本缓存
SCRIPT KILL 停止当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。这个命令主要用于终止运行时间过长的脚本
SCRIPT LOAD 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本

 

十、Connection

   connection命令速查:

命令 说明
AUTH 通过设置配置文件中 requirepass 项的值,可以使用密码来保护 Redis 服务器
ECHO 打印一个特定的信息 message ,测试时使用。
PING 使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG,通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值
QUIT 请求服务器关闭与当前客户端的连接
SELECT 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值

十一、Server

  server命令速查:

命令 说明
BGREWRITEAOF 执行一个 AOF文件 重写操作。重写会创建一个当前 AOF 文件的体积优化版本。
BGSAVE 在后台异步(Asynchronously)保存当前数据库的数据到磁盘
CLIENT GETNAME 返回 CLIENT SETNAME 命令为连接设置的名字
CLIENT KILL 关闭地址为 ip:port 的客户端
CLIENT LIST 以人类可读的格式,返回所有连接到服务器的客户端信息和统计数据
CLIENT SETNAME 为当前连接分配一个名字
CONFIG GET CONFIG GET 命令用于取得运行中的 Redis 服务器的配置参数
CONFIG RESETSTAT 重置 INFO 命令中的某些统计数据
CONFIG REWRITE CONFIG REWRITE 命令对启动 Redis 服务器时所指定的 redis.conf 文件进行改写
CONFIG SET CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启
DBSIZE 返回当前数据库的 key 的数量
DEBUG OBJECT DEBUG OBJECT 是一个调试命令,它不应被客户端所使用
DEBUG SEGFAULT 执行一个不合法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 模拟
FLUSHALL 清空整个 Redis 服务器的数据(删除所有数据库的所有 key )
FLUSHDB 清空当前数据库中的所有 key
INFO 返回关于 Redis 服务器的各种信息和统计数值
LASTSAVE 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
MONITOR 实时打印出 Redis 服务器接收到的命令,调试用
PSYNC 用于复制功能的内部命令
SAVE

SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由 BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。

SHUTDOWN

SHUTDOWN 命令执行以下操作:

停止所有客户端
如果有至少一个保存点在等待,执行 SAVE 命令
如果 AOF 选项被打开,更新 AOF 文件
关闭 redis 服务器(server)

SLAVEOF SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为
SLOWLOG Slow log 是 Redis 用来记录查询执行时间的日志系统
SYNC 用于复制功能的内部命令
TIME

返回当前服务器时间



ServiceStack.Redis之IRedisClient<第三篇>

  事实上,IRedisClient里面的很多方法,其实就是Redis的命令名。只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这些方法。

一、属性

  IRedisClient的属性如下:

属性 说明
ConnectTimeout  连接超时
Db 当前数据库的ID或下标
DbSize  当前数据库的 key 的数量
HadExceptions   
Hashes  存储复杂对象,一个value中有几个field 
Host  Redis的Server服务器主机地址
Info  返回关于 Redis 服务器的各种信息和统计数值
LastSave  最近一次 Redis 成功将数据保存到磁盘上的时间
Lists  当前数据库中所有的List集合
Password  密码
Port  Redis的Server端口
RetryCount  重试次数
RetryTimeout  重试超时
SendTimeout  发送超时
Sets  当前数据库中所有的HashSet<T>集合
SortedSets  当前数据库中所有的SortedSet<T>集合
this[string key] 通过索引的方式(key)访问一个字符串类型值

  代码示例:

Redis 安装与简单示例
        RClient.AddItemToSet("蜀国", "刘备");
        RClient.AddItemToSet("蜀国", "关羽");
        RClient.AddItemToSet("蜀国", "张飞");

        IHasNamed<IRedisSet> rr = RClient.Sets;
        HashSet<string> HashSetString = rr["蜀国"].GetAll();
        foreach (string str in HashSetString)
        {
            Response.Write(str);
        }
Redis 安装与简单示例

 

二、IRedisClient数据操作

  1、ICacheClient接口

  IRedisClient实现了接口ICacheClient,其中ICacheClient主要提供的功能如下:

方法 说明
Add 根据传入的key-value添加一条记录,当key已存在返回false
FlushAll 使所有缓存失效(清除Redis所有数据库的所有Key)
Get 根据传入的key获取一条记录的值
GetAll 根据传入的多个key获取多条记录的值
Remove 根据传入的key移除一条记录
RemoveAll 根据传入的多个key移除多条记录
Replace 根据传入的key覆盖一条记录的值,当key不存在不会添加
Set 根据传入的key修改一条记录的值,当key不存在则添加
SetAll 根据传入的多个key覆盖多条记录
Increment  
Decrement  

  特别说明,比如添加的主要方法包括两个重载,一个多了个DateTime类型参数,一个多了TimeSpan类型的参数。这两个都是缓存失效的时间(相当于缓存依赖里的绝对过期时间)。

  • DateTime失效点:到达该时间点,立即失效;
  • TimeSpan失效点:经过该时间段,立即失效;

  简单示例:

Redis 安装与简单示例
        public ActionResult Index()
        {
            RedisClientManagerConfig RedisConfig = new RedisClientManagerConfig();
            RedisConfig.AutoStart = true;
            RedisConfig.MaxReadPoolSize = 60;
            RedisConfig.MaxWritePoolSize = 60;

            PooledRedisClientManager prcm = new PooledRedisClientManager(new List<string>() { "127.0.0.1" }, new List<string>() { "127.0.0.1" }, RedisConfig);

            using (IRedisClient RClient = prcm.GetClient())
            {
                RClient.Add("c1", "缓存1");
                RClient.Set("c1", "缓存2");
                RClient.Replace("c1", "缓存3");
                Response.Write(RClient.Get<string>("c1"));
                RClient.Remove("c1");
                Response.Write(RClient.Get<string>("c1") == null);
            }

            return Content("");
        }
Redis 安装与简单示例

  2、简单功能

  当然,除了实现ICacheClient接口的功能外,对于基本操作,实际上也还有很多功能

方法 说明
AppendToValue 根据Key将参数value追加到原有值的结尾
ContainsKey 判断Key在本数据库内是否已被使用(包括各种类型、内置集合等等)
GetAllKeys 获取所有的Keys集合
DecrementValue 根据指定的Key,将值减1(仅整型有效)
DecrementValueBy 根据指定的Key,将值减去指定值(仅整型有效)
IncrementValue 根据指定的Key,将值加1(仅整型有效)
IncrementValueBy 根据指定的Key,将值加上指定值(仅整型有效)
RenameKey 重命名一个Key,值不变
SearchKeys 从数据库中查找名称相等的Keys的集合,特殊模式如h[ae]llo,仅英文有效。
GetRandomKey 随机获取一个已经被使用的Key
GetValue 根据Key获取值,只对string类型有效
GetValues 根据输入的多个Key获取多个值,支持泛型
GetTimeToLive 获取指定Key的项距离失效点的TimeSpan
GetSortedSetCount 获取已排序集合的项的数目,参数支持下标以及score筛选
ExpireEntryAt 根据指定的key设置一项的到期时间(DateTime)
ExpireEntryIn 根据指定的key设置一项的到期时间(TimeSpan)
FlushDb 清除本数据库的所有数据
FlushAll 清除所有数据库的所有数据
Shutdown 停止所有客户端,保存,关闭Redis服务
Save 保存数据DB文件到硬盘
SaveAsync 异步保存
RewriteAppendOnlyFileAsync 只在异步情况下将数据追加到服务器文件
WriteAll  
PublishMessage 将Message发送到指定的频道
StoreObject  
GetValuesMap 以键值对的方式返回值类型相同的多条数据,支持泛型与返回字符串。
字符串  
SetEntry 根据Key修改一个值,存在则覆盖。(只能设置字符串)
SetEntryIfNotExists 根据Key设置一个值,仅仅当Key不存在时有效,如Key已存在则不修改(只支持字符串)
SetEntryIfNotExists 根据Key设置一个值,返回旧值。
GetEntryType

根据Key获取当前存储的值是什么类型:

None = 0
String = 1
List = 2
Set = 3
SortedSet = 4
Hash = 5

  

  

  3、内置集合

  比如,IRedisClient支持在内部维护如下集合类型的数据:

  • List<T>
  • 排序的List<T>(.Net 4.0后的SortedSet)
  • HashSet<T>

  关于如下4种类型数据的操作:

方法 说明
AddItemToList 添加一个项到内部的List<T>
AddItemToSet 添加一个项到内部的HashSet<T>
AddItemToSortedSet 添加一个项到内部的排序List<T>,其中重载方法多了个score:排序值。优先按照score从小->大排序,否则按值小到大排序
AddRangeToList 一次过将参数中的List<T>中的多个值添加入内部的List<T>
AddRangeToSet 一次过将参数中的HashSet<T>中的多个值添加入内部的HashSet<T>
AddRangeToSortedSet 一次过将参数中的List<T>中的多个值添加到内部List<T>,重载方法的score表示排序值。
GetAllItemsFromList 获取指定ListId的内部List<T>的所有值
GetAllItemsFromSet 获取指定SetId的内部HashSet<T>的所有值
GetAllItemsFromSortedSet 获取指定ListId的内部已排序List<T>的所有值
GetAllItemsFromSortedSetDesc 获取指定ListId的内部已排序List<T>的所有值,不过获取的值是倒序排列后的。
GetRangeFromList 获取指定ListId的内部List<T>中指定下标范围的数据
GetRangeFromSortedList 获取指定ListId的内部已排序List<T>中指定下标范围的数据
GetRangeFromSortedSet 获取指定SetId的内部HashSet<T>中指定下标范围的数据
GetRangeFromSortedSetByHighestScore 获取指定SetId的内部HashSet<T>中按照score由高->低排序后的分值范围的数据,并且支持skip、take
GetRangeFromSortedSetByLowestScore 同上,只不过是按score分值由低->高取一定范围内的数据
GetRangeFromSortedSetDesc 按倒序获取内部HashSet<T>的指定下标范围内的数据
GetRangeWithScoresFromSortedSet 与From相同,只不过获取的是键值对,数据中带分值score
GetRangeWithScoresFromSortedSetByHighestScore 同上
GetRangeWithScoresFromSortedSetByLowestScore 同上
GetRangeWithScoresFromSortedSetDesc 同上
GetAllWithScoresFromSortedSet 获取指定ListId的已排序的内部List<T>与其score
GetSortedItemsFromList 从指定ListId的List<T>中获取按指定排序的集合,支持Skip,Take
GetSortedEntryValues 从指定ListId的List<T>中获取经过排序指定开始位置与个数的项
RemoveAllFromList 移除指定ListId的内部List<T>
RemoveItemFromList 移除指定ListId的内部List<T>中第二个参数值相等的那一项
RemoveItemFromSet 从指定SetId的内部HashSet<T>中移除与第二个参数值相等的那一项
RemoveItemFromSortedSet 从指定ListId中已排序的内部List<T>中移除值相等的那一项
RemoveRangeFromSortedSet 从指定ListId已排序的List<T>中移除指定下标范围的项
RemoveRangeFromSortedSetByScore 从指定ListId已排序的List<T>中移除指定score范围的项
RemoveStartFromList 从指定ListId移除开头那一项
RemoveEndFromList 从指定ListId移除末尾那项
BlockingRemoveStartFromList 阻塞地从指定ListId移除开头那一项
BlockingRemoveStartFromLists  
RemoveEntry 根据传入的多个ListId,清除多个内部List<T>
RemoveAllLuaScripts 清除所有的 Lua 脚本缓存
RemoveEntryFromHash  
GetItemFromList 根据ListId和下标获取一项
GetItemIndexInSortedSet 根据List和值,获取内置的排序后的List<T>的下标
GetItemIndexInSortedSetDesc 同上,不过顺序相反
GetItemScoreInSortedSet 根据传入的ListId和值获取内置List<T>项的score
GetListCount 根据ListId,获取内置的List<T>的项数
GetSetCount 根据SetId,获取内置的HashSet<T>的项数
GetIntersectFromSets 从输入的多个HashSet<T>的Id中获取交集
GetUnionFromSets 从输入的多个HashSet<T>的Id中获取并集
GetRandomItemFromSet 从指定ListId的集合中获取随机项
StoreUnionFromSets 将多个HashSet<T>,合并为第一个参数中的一个大HashSet<T>,第一个参数中的HashSet<T>原本可以不存在
StoreUnionFromSortedSets 将多个SortedSet<T>,合并为第一个参数中的一个大SortedSet<T>,第一个参数中的SortedSet<T>原本可以不存在
StoreIntersectFromSets 将交集结果保存在第一个参数的集合中,对HastSet<T>作用
StoreIntersectFromSortedSets 将交集结果保存在第一个参数的集合中,对SortedSet<T>作用
EnqueueItemOnList 将一个元素存入指定ListId的List<T>的头部
DequeueItemFromList 将指定ListId的List<T>末尾的那个元素出列,返回出列元素
BlockingDequeueItemFromList 将指定ListId的List<T>末尾的那个元素出列,区别是:会阻塞该List<T>,支持超时时间,返回出列元素
BlockingDequeueItemFromLists  
BlockingPopItemFromList 阻塞地将指定ListId的List<T>末尾的哪一个元素移除
BlockingPopItemFromLists  
BlockingPopAndPushItemBetweenLists 将第一个集合的元素移除并添加到第二个集合的头部,返回该元素,会同时阻塞两个集合
PopItemFromList 从指定ListId的List<T>末尾移除一项并返回
PopItemFromSet 从指定SetId的HashSet<T>末尾移除一项并返回
PopItemWithHighestScoreFromSortedSet 从指定SetId的HashSet<T>移除score最高的那一项
PopItemWithLowestScoreFromSortedSet 从指定SetId的HashSet<T>移除score最低的那一项
PopAndPushItemBetweenLists 将第一个集合的元素移除并添加到第二个集合的头部
SetContainsItem 判断指定SetId的HashSet<T>中是否包含指定的value(仅仅支持字符串)
SortedSetContainsItem 判断SortedSet是否包含一个键
TrimList 根据ListId裁剪内置集合,保留下去from->at之间(包含from于at)的元素,其余的裁去
IncrementItemInSortedSet 为指定ListId的集合中的value的分值score加上指定分值
SetItemInList 重新设置指定ListId和下标的value为指定值
PushItemToList 在指定ListId的内置List<T>中入列一个键值对,在末尾
PrependItemToList 将一个值插入到List<T>的最前面
PrependRangeToList 一次性添加多个值到指定ListId的内置List<T>中
GetDifferencesFromSet 返回存在于第一个集合,但是不存在于其他集合的数据。差集
StoreDifferencesFromSet 将求差集的结果保存在第一个参数的集合中
MoveBetweenSets 将元素从一个集合移动到另一个集合的开头。(删除与添加)

  下面仅给出一个List<T>与HashSet<T>的示例:

Redis 安装与简单示例
        //内部维护一个List<T>集合
        RClient.AddItemToList("蜀国", "刘备");
        RClient.AddItemToList("蜀国", "关羽");
        RClient.AddItemToList("蜀国", "张飞");
        List<string> ListString = RClient.GetAllItemsFromList("蜀国");
        foreach (string str in ListString)
        {
            Response.Write(str);    //输出 刘备 关羽 张飞
        }
               
        RClient.AddItemToSet("魏国", "曹操");
        RClient.AddItemToSet("魏国", "曹操");
        RClient.AddItemToSet("魏国", "典韦");
        HashSet<string> HashSetString = RClient.GetAllItemsFromSet("魏国");
        foreach (string str in HashSetString)
        {
            Response.Write(str);    //输出 典韦 曹操
        }
Redis 安装与简单示例

   下面再给一个范围Range操作示例:

Redis 安装与简单示例
        //内部维护一个List<T>集合
        RClient.AddItemToSortedSet("蜀国", "刘备", 5);
        RClient.AddItemToSortedSet("蜀国", "关羽", 2);
        RClient.AddItemToSortedSet("蜀国", "张飞", 3);
        IDictionary<String,double> DicString = RClient.GetRangeWithScoresFromSortedSet("蜀国", 0, 2);
        foreach (var r in DicString)
        {
            Response.Write(r.Key + ":" + r.Value);    //输出 
        }
Redis 安装与简单示例

   3、内置Hash

  内部维护一个HashTable

方法 说明
SetEntryInHash 设置一个键值对入Hash表,如果哈希表的key存在则覆盖
SetEntryInHashIfNotExists 当哈希表的key未被使用时,设置一个键值对如Hash表
GetHashValues 根据HashId获取多个改HashId下的多个值
GetValuesFromHash 根据HashId和Hash表的Key获取多个值(支持多个key)
GetValueFromHash 根据HashId和Hash表的Key获取单个值
GetHashKeys 获取指定HashId下的所有Key
GetHashValues 获取指定HashId下的所有值
GetHashCount 获取指定HashId下的所有Key数量
HashContainsEntry 判断指定HashId的哈希表中是否包含指定的Key
IncrementValueInHash 将指定HashId的哈希表中的值加上指定值
StoreAsHash 将一个对象存入Hash(支持泛型)
GetFromHash 根据Id从Hash表中取出对象(支持泛型)
SetRangeInHash 通过IEnumerable<KeyValuePair<string, string>>一次性设置多个值,当内部Hash的key不存在则添加,存在则覆盖

  代码示例:

        RClient.SetEntryInHash("xxx","key","123");
        List<KeyValuePair<string, string>> keyValuePairs = new List<KeyValuePair<string, string>>();
        KeyValuePair<string, string> kvp = new KeyValuePair<string, string>("key", "1");
        keyValuePairs.Add(kvp);
        RClient.SetRangeInHash("xxx", keyValuePairs);

  

  4、Lua Script

  从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以执行各种Lua脚本。IRedisClient支持执行Lua脚本,其供用于执行Lua脚本的方法如下:

方法 说明
LoadLuaScript 将一个脚本装入脚本缓存,但并不立即运行它
KillRunningLuaScript 停止正在运行的指定Id的脚本
ExecLuaAsInt  
ExecLuaAsList  
ExecLuaAsString  
ExecLuaShaAsInt  
ExecLuaShaAsList  
ExecLuaShaAsString  
HasLuaScript 判断Lua脚本是否在脚本缓存里
CalculateSha1  
WhichLuaScriptsExists  

  关于Lua脚本可以到这里去了解:http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html

  5、事务

  Redis中的事务

方法 说明
Watch 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
UnWatch 取消 WATCH 命令对所有 key 的监视
AcquireLock 申请对一个Key加锁(期间其他对象不能访问)
CreateTransaction 创建一个事务,返回一个IRedisTransaction对象
CreateSubscription 创建一个订阅事件返回一个IRedisSubscription对象
CreatePipeline 返回一个IRedisPipeline对象