现在位置首页 / 生活多美好 /正文

Redis学习笔记 Hash类型及C#调用(二)

作者: 春暖花开 | 2015年8月3日| 热度:℃ | 评论: |参与:


  Redis学习笔记 Hash类型及C#调用(一)

其他类型,请参看链接。

Redis学习笔记  各篇幅目录,热乎乎出炉,欢迎点击


完整 C# Demo下载 :http://pan.baidu.com/s/1i390iLR


7、

hincrby key field increment

    为哈希表key中的域 field 的值加上增量 increment(也可以为负数)
    如果key 不存在,创建之,然后再做增量。
    如果 field 不存在,赋值为0,做增量。

示例:

 hincrby hashkey7 field1 100  //100

如图:  4-2-7  

 

C#:
// 方法:
   

     public long HIncrby(string hashId, byte[] key, int incrementBy);
     public long HIncrby(string hashId, byte[] key, long incrementBy);

//实现:
        代码在 demo 的 hincrby_hincrbyfloat_hkeys_hmget_hmset_hsetnx_hvals() 方法中
    

    using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))
        {
                string key = "keyhashhincrby_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HIncrby(key, Encoding.UTF8.GetBytes("field1_C#"), 100);
                var ss = Encoding.UTF8.GetString(redisClient.HGet(key, Encoding.UTF8.GetBytes("field1_C#")));
        }

    
8、

hincrbyfloat key field increment

    为哈希表 key 中的域 field 加上浮点数增量 increment ,同 hincrby 命令。
   


9、

hkeys key

    返回哈希表key 中的所有域名。
示例:
 

hset hashkey9 field1 "values1"
hset hashkey9 field2 "values2"
hkeys hashkey9   //field1   field2

如图:4-2-9

C#:
// 方法:

     public byte[][] HKeys(string hashId);


    
//实现:
        代码在 demo 的 hincrby_hincrbyfloat_hkeys_hmget_hmset_hsetnx_hvals() 方法中

 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))
        {
                key = "keyhashhkeys_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("values1"));
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field2_C#"), Encoding.UTF8.GetBytes("values2"));
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field3_C#"), Encoding.UTF8.GetBytes("values3"));
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field4_C#"), Encoding.UTF8.GetBytes("values4"));
                byte[][] arrReturn = redisClient.HKeys(key); // 获得
                List<string> arr = new List<string>();
                foreach (var a in arrReturn)
                {
                    arr.Add(Encoding.UTF8.GetString(a));
                }
                /*结果:
                 * field1_C#
                 * field2_C#
                 * field3_C#
                 * field4_C#
                 **************************HKeys 结束*/
}


10、

 hmget    key field [field ...]

    返回哈希表key 中,一个或多个给定域的值


    hmset key field value [field value ...]

    同时将多个 field-value (域-值)对设置到哈希表 key 中。
    此命令会覆盖哈希表中已存在的域。
    如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。    
    
示例:

    hmset hashkey10 dog "doudou" cat "nounou" //一次设置多个域值
    hmget hashkey10 dog cat nofield    //doudou nounou (nil)

如图:4-2-10



C#:
// 方法:

        public void HMSet(string hashId, byte[][] keys, byte[][] values);
        public byte[][] HMGet(string hashId, params byte[][] keys);

//实现:
        代码在 demo 的 hincrby_hincrbyfloat_hkeys_hmget_hmset_hsetnx_hvals() 方法中

   using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))
        {
             key = "keyhashhmget_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                var arr_fields = new byte[][] { 
                   Encoding.UTF8.GetBytes("field1_C#"),
                   Encoding.UTF8.GetBytes("field2_C#"),
                   Encoding.UTF8.GetBytes("field3_C#"),
                   Encoding.UTF8.GetBytes("field4_C#"),
                   Encoding.UTF8.GetBytes("field5_C#")
                };
                var arr_values = new byte[][] { 
                   Encoding.UTF8.GetBytes("values1"),
                   Encoding.UTF8.GetBytes("values2"),
                   Encoding.UTF8.GetBytes("values3"),
                   Encoding.UTF8.GetBytes("values4"),
                   Encoding.UTF8.GetBytes("values5")
                };
                redisClient.HMSet(key, arr_fields, arr_values);   //HMSet 操作,设置多个 fields
                var arr_getfields = new byte[][] { 
                   Encoding.UTF8.GetBytes("field2_C#"),
                   Encoding.UTF8.GetBytes("field3_C#")
                };
                byte[][] arrReturnFromHMGet = redisClient.HMGet(key,arr_getfields); //HMGet 获取多个fields
                List<string> arrFromHMGet = new List<string>();
                foreach (var a in arrReturnFromHMGet)
                {
                    arrFromHMGet.Add(Encoding.UTF8.GetString(a));
                }
                /*结果:
                 * values2
                 * values2
                 ********************************************HMSet  HMGet 结束*/
        }

    
11、

hsetnx key field value

    将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
    若域 field 已经存在,该操作无效。
示例:

     hsetnx hashkey11 field1 values1  //创建key-field,并赋值。
     hsetnx hashkey11 field1 valuesedit  //已存在key-field,操作无效。

    
如图:4-2-11

   
C#:
// 方法:

   public long HSetNX(string hashId, byte[] key, byte[] value);

//实现:
        代码在 demo 的 hincrby_hincrbyfloat_hkeys_hmget_hmset_hsetnx_hvals() 方法中

   using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))
        {
                key = "keyhashhsetnx_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSetNX(key, Encoding.UTF8.GetBytes("notexistfields"), Encoding.UTF8.GetBytes("msetnx values")); //没有域notexistfields,创建并赋值
                redisClient.HSetNX(key, Encoding.UTF8.GetBytes("notexistfields"), Encoding.UTF8.GetBytes("msetnx values2")); //不执行。 因为域已经存在,不操作。
                var returnstr = Encoding.UTF8.GetString(redisClient.HGet(key, Encoding.UTF8.GetBytes("notexistfields"))); //msetnx values
                /*结果:
                 *  msetnx values
                 *********************************** HSetNX 结束 */
        }


12、

hvals keys

    返回哈希表key中所有域的值。
    
示例:

hmset hashkey12 field1 values1 field2 values2
hvals hashkey12  //结果:field1 field2

       
如图:4-2-12



C#:
// 方法:

        public long HSetNX(string hashId, byte[] key, byte[] value);

//实现:
        代码在 demo 的 hincrby_hincrbyfloat_hkeys_hmget_hmset_hsetnx_hvals() 方法中

    using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))
        {
              key = "keyhashhvals_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                var arr_fields_hvals = new byte[][] { 
                   Encoding.UTF8.GetBytes("field1_C#"),
                   Encoding.UTF8.GetBytes("field2_C#")
                };
                var arr_values_hvals = new byte[][] { 
                   Encoding.UTF8.GetBytes("values1"),
                   Encoding.UTF8.GetBytes("values2")
                };
                redisClient.HMSet(key, arr_fields_hvals, arr_values_hvals);   //HMSet 操作,设置多个 fields
                byte[][] arrReturnFromHVals = redisClient.HVals(key); //HMGet 获取多个fields
                List<string> arrFromHVals = new List<string>();
                foreach (var a in arrReturnFromHVals)
                {
                    arrFromHVals.Add(Encoding.UTF8.GetString(a));  
                }
                /* 结果:
                 * values1 
                 * values2
                 ******************************************** HVals 结束 */
        }


----------------------------------------------------------------------------

完整 C# Demo下载 :http://pan.baidu.com/s/1i390iLR




点击阅读本文所属分类的更多文章: 生活多美好 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:[email protected]

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:[email protected]

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询