• .Net中Redis的Hash表操作


    前言

    Redis中的Hash是一种存储数据的数据结构,用于存储键值对的集合。Hash常用于存储对象或者记录,因为它可以将多个属性存储为一个键值对,这样可以方便地获取、修改、和删除对象中的单个属性。

    Redis的使用 

    安装包ServiceStack.Redis

    NuGet\Install-Package ServiceStack.Redis 

    引入包

    using ServiceStack.Redis;

    (一)String类型操作

    1.1 Increment()

    向当前Redis数据库中的item加1,第二个参数为自增量。

    1. using (IRedisClient client=new RedisClient("127.0.0.1", 6379))
    2. {
    3. client.Increment("item", 1);
    4. }

    1.2 Decrement()

    向当前Redis数据库中的item减1,第二个参数为自减量。

    1. using (IRedisClient client=new RedisClient("127.0.0.1", 6379))
    2. {
    3. client.Decrement("item", 1);
    4. }

    1.3 ContainsKey()

    判断当前Redis数据库中是否存在当前的key,存在返回ture,不存在返回false 。

    1. using (IRedisClient client=new RedisClient("127.0.0.1", 6379))
    2. {
    3. Console.WriteLine(client.ContainsKey("index"));
    4. }

    1.4 GetEntryType() 

    查看当前Redis数据库中的key的类型。

    1. using (IRedisClient client=new RedisClient("127.0.0.1", 6379))
    2. {
    3. Console.WriteLine(client.GetEntryType("name"));
    4. }

    (二)Hash表的操作

    2.1 SetEntryInHash()

    向Redis数据库中新增Hash表,该方法需要传递三个参数,第一个参数为hashid,第二个参数为key值,第三个参数为value值。

    client.SetEntryInHash("Key", "name", "猪儿虫");

    2.2 GetValueFromHash()

    查询Redis数据库中的hash表的单值,该方法需要传递两个参数,第一个参数为hashid,第二个参数为你要查询的key值,返回一个string类型。

    var Keys = client.GetValueFromHash("Key", "name");

    2.3 SetRangeInHash()

    批量向Redis数据库中添加数据, 该方法传递俩个参数,第一个参数为hashid,第二个参数为一个字典类型的数据,该字典内保存的就是我们需要保存的数据。

    1. Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
    2. keyValuePairs.Add("name", "猪儿虫");
    3. keyValuePairs.Add("age", "18");
    4. client.SetRangeInHash("Key", keyValuePairs);

    2.4 GetAllEntriesFromHash()

    批量读取Redis数据库中的数据,该方法返回一个字典类型的数据。

    1. var Keyies = client.GetAllEntriesFromHash("Key");
    2. foreach (var v in Keyies)
    3. {
    4. Console.WriteLine(v.Key + "|" + v.Value);
    5. }

    2.5 SetEntryInHashIfNotExists() 

    该方法会先判断数据库中是否存在该值,有返回False,不添加,没有返回Ture,添加到Redis数据库中,该方法需要传递三个参数,第一个参数为hashid,第二个参数为key值,第三个参数为value值。

    1. var iosn = client.SetEntryInHashIfNotExists("Key", "index", "20");
    2. Console.WriteLine(iosn);

    2.6 StoreAsHash<>()

    操作对象存入Redis数据库中,需要提供一个泛型,即为需要向Redis数据库中添加的对象,传入对象为对象本身。

    创建一个对象

    1. class User
    2. {
    3. public string Id { get; set; }
    4. public string age { get; set; }
    5. }

    操作存入

    client.StoreAsHash(new User() { Id = "001", age = "18" });

     2.7 GetFromHash<>()

    读取存入的对象,需要提供读取的对象的泛型,返回一个对象。

    1. var Users = client.GetFromHash("001");
    2. Console.WriteLine(Users.age);

    2.8 GetHashCount()

    获取当前Hash表中所存的值的数量,传入一个参数hashid。

    Console.WriteLine(client.GetHashCount("Key"));

    2.9 GetHashKeys()

    获取当前Hash表的所有的key值,返回一个List类型对象,传入一个参数hashid。

    1. var keys = client.GetHashKeys("Key");
    2. foreach (var v in keys)
    3. {
    4. Console.WriteLine(v);
    5. }

    2.10 GetHashValues()

    获取当前Hash表的所有的Value值,返回一个List类型对象,传入一个参数hashid。

    1. var valuess = client.GetHashValues("Key");
    2. foreach (var v in valuess)
    3. {
    4. Console.WriteLine(v);
    5. }

    2.11 RemoveEntryFromHash()

    删除对应Hash表中的对应的key值数据,传入第一个参数hashid,第二个参数需要删除的key值。

    client.RemoveEntryFromHash("Key", "index");

    2.12 HashContainsEntry()

    判断Hash表中是否有该key的值,有返回Ture,没有返回False。

    Console.WriteLine(client.HashContainsEntry("Key", "name"));

    2.13 IncrementValueInHash()

    向Hash表中的值进行自增加,第三个参数为增加量。

    client.IncrementValueInHash("Key", "age", 5);
  • 相关阅读:
    企业数据挖掘平台产品特色及合作案例介绍
    笔试强训未触及题目(个人向)
    Docker 第十三章 : Docker 三剑客之 Swarm(服务管理命令)
    动态内存分配 指针类型转换
    面试某大厂,被Channel给吊打了,这次一次性通关channel!
    如何阅读一本书(上)
    如何在OpenWRT上配置SFTP远程文件传输
    java计算机毕业设计VUE技术小区车辆档案车位管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
    【斯坦福大学公开课CS224W——图机器学习】一、图机器学习中的传统方法(1)
    如何实现MQTT协议数据传输?
  • 原文地址:https://blog.csdn.net/qq_58159494/article/details/134479944