现在位置首页 / 产品设计 /正文

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

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

从本篇开始,学习并记录 Hash 类型的命令及应用。

其他类型,请参看链接。

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


1、 

hset key field value

   将哈希表 key 中的域 field 的值设置为 value。

   key不存在,创建。

   field 不存在,创建。已存在,覆盖之。

   

示例:

    hset hashkey1 field1 "value1"      //创建
    hset hashkey1 field1 "value1-new"  //覆盖
    hset hashkey1 field2 "value2"     //创建

 如图 4-1-1 


C#:

// 方法:

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

//实现: 代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
            {
               string key = "keyhashhset_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("value1_C#"));
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field2_C#"), Encoding.UTF8.GetBytes("value2_C#"));
                /*
                     hgetall keyhashhset_C#
                *  field1_C#  域
                 *  value1_C#  值
                 *  field2_C#
                 *  value2_C#
                 */
}


2、

hget key field

返回哈希表key中给定域 field 的值。


示例:

hset hashkey2 field1 "test hget"  //创建个key
hget hashkey2 field1  //返回"test hget"

 如图 4-1-2 


C#:

// 方法:

      public byte[] HGet(string hashId, byte[] key);


//实现: 代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
 {
 key = "keyhashhget_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("test hget 中华")); //创建个key-field
                byte[] hgetstr = redisClient.HGet(key, Encoding.UTF8.GetBytes("field1_C#")); //获取到值
                string returnstr = Encoding.UTF8.GetString(hgetstr); //转化成字符串
                /*
                   test hget 中华
                 *********************************************HGet结束*/
 }


3、

hgetall key

返回哈希表 key 中,所有域的值。


示例:

hset hashkey3 field1 values1
hset hashkey3 field2 values2
hset hashkey3 field3 values3
hset hashkey3 field4 values4   //创建key
hgetall hashkey3  //返回key=hashkey3 下域的值。


如图 4-1-3

C#:

// 方法:

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

//实现: 

代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
 {
 key = "keyhashhgetall_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("test hgetall 中华1")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field2_C#"), Encoding.UTF8.GetBytes("test hgetall 中华2")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field3_C#"), Encoding.UTF8.GetBytes("test hgetall 中华3")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field4_C#"), Encoding.UTF8.GetBytes("test hgetall 中华4")); //创建个key-field
                byte[][] arrReturn= redisClient.HGetAll(key); //得到的结果
                List<string> arr = new List<string>();
                foreach (var a in arrReturn)
                {
                    arr.Add(Encoding.UTF8.GetString(a));
                }
                /*
                 * field1_C#
                 * test hgetall 中华1
                 * field2_C#
                 * test hgetall 中华2
                 * field3_C#
                 * test hgetall 中华3
                 * field4_C#
                 * test hgetall 中华4
                 ********************************************* HGetAll结束 */
}


4、

hdel key field [field ...]

删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。


示例:

hset hashkey4 field1 values1
hset hashkey4 field2 values2
hset hashkey4 field3 values3
hset hashkey4 field4 values4
hset hashkey4 field5 values5
hset hashkey4 field6 values6   //创建key
hgetall hashkey4  //返回key=hashkey4 下域的值。
hdel hashkey4 field2  //删除单个域
hdel hashkey4 field4 field5 //删除多个域
hgetall hashkey4  // field1=values1  field3=values3 field6=values6


如图:4-1-4


C#:

// 方法:

        public long HDel(string hashId, byte[] key);   //删除单一域
        public long HDel(string hashId, byte[][] keys);//删除多个域

//实现: 

代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
 {
                key = "keyhashhdel_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("test hgetall 中华1")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field2_C#"), Encoding.UTF8.GetBytes("test hgetall 中华2")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field3_C#"), Encoding.UTF8.GetBytes("test hgetall 中华3")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field4_C#"), Encoding.UTF8.GetBytes("test hgetall 中华4")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field5_C#"), Encoding.UTF8.GetBytes("test hgetall 中华5")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field6_C#"), Encoding.UTF8.GetBytes("test hgetall 中华6")); //创建个key-field
                redisClient.HDel(key, Encoding.UTF8.GetBytes("field2_C#"));  //删除一个域
                redisClient.HDel(key, new byte[][] { Encoding.UTF8.GetBytes("field4_C#"), Encoding.UTF8.GetBytes("field5_C#") });//删除多个域
                /*
                 * field1_C#
                 * test hgetall 中华1
                 * field3_C#
                 * test hgetall 中华3
                 * field6_C#
                 * test hgetall 中华6
                 **************************************************** HDel 结束 */
}


5、

hexists key field

key中 域field 是否存在。 存在返回 1,不存在返回 0。

示例:

 hexists hashkey5 field1    //返回0
 hset hashkey5 field1 "values1"   //创建key-field
 hexists hashkey5 field1    //返回1

如图:4-1-5


C#:

// 方法:

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

//实现: 

代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
{
key = "keyhashhexists_C#";
            if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
            var v = redisClient.HExists(key, Encoding.UTF8.GetBytes("field1_C#")); //0 -未查询到结果
            var v2 = redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("values1_C#"));  //创建一个key-field
            var v3 = redisClient.HExists(key, Encoding.UTF8.GetBytes("field1_C#"));  //1 -查询到一个结果
}


6、

hlen key

    key 中域的数量。

示例:

hset keyhashhlen field1 values1
hset keyhashhlen field2 values2
hset keyhashhlen field3 values3
hlen keyhashhlen   //3

如图:4-1-6


C#:

// 方法:

        public long HLen(string hashId);

//实现: 

代码在 demo 的 hset_hget_hgetall_hdel_hexists_hlen() 中

using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 2))  //DB=2   即:select 2 
{
 key = "keyhashhlen_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field1_C#"), Encoding.UTF8.GetBytes("values1")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field2_C#"), Encoding.UTF8.GetBytes("values2")); //创建个key-field
                redisClient.HSet(key, Encoding.UTF8.GetBytes("field3_C#"), Encoding.UTF8.GetBytes("values3")); //创建个key-field
                var length = redisClient.HLen(key);  //3个
}




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




点击阅读本文所属分类的更多文章: 产品设计 。和高手一起交流:346717337
友荐云推荐

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

给您更多信息和帮助

在这里您可以找到更多:

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

投稿:suchso@vip.qq.com

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

echarts教程系列
本月最热文章

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

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

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