.NET平台下Redis使用(七)【StackExchange.Redis测试Redis五种数据类型】

信念之于人,犹翅膀之于鸟,信念是飞翔的翅膀


Program.cs代码:

   class Program
    {
        static void Main(string[] args)
        {
            //字符串
            //RedisDemo.StringTest();

            //Hash
            //RedisDemo.HashTest();

            //List
            RedisDemo.ListTest();
            Console.ReadKey();
            //Set
            //RedisDemo.SetTest();

            //SortedSet
            //RedisDemo.SortedSet();
        }

    }

RedisDemo.cs代码:

public class RedisDemo
    {
        public static void StringTest()
        {
            using (ConnectionMultiplexer conn = RedisHelper.RedisConn)
            {
                string key = "StringTest";
                var db = conn.GetDatabase();

                if (db.KeyExists(key))
                    db.KeyDelete(key);

                db.StringAppend(key, DateTime.Now.ToString());
                Console.WriteLine("写入字符串结束");
                Console.ReadLine();

                Console.WriteLine(db.StringGet(key));
                Console.ReadLine();

            }

        }

        public static void HashSetTest()
        {
            List<UserInfoDto> list = new List<UserInfoDto>();
            for (int i = 0; i < 100; i++)
            {
                list.Add(new UserInfoDto()
                {
                    Id = i,
                    LastLoginTime = DateTime.Now,
                    Password = "password" + i.ToString(),
                    StaffId = "StaffId_" + i.ToString(),
                    StaffName = "StaffName_" + i.ToString()
                });
            }

            using (ConnectionMultiplexer conn = RedisHelper.RedisConn)
            {
                string key = "HashSetTest";
                var db = conn.GetDatabase();
                db.KeyDelete(key);
                //string listKey = IdentityMap.CreateKey<UserInfoDto>();
                HashEntry[] items = new HashEntry[list.Count];
                for (int i = 0; i < list.Count - 1; i++)
                {
                    string json = JsonConvert.SerializeObject(list[i]);

                    db.HashSet(key, list[i].Id, json);
                    //db.HashSet(key, "password", list[i].Password);
                    //db.HashSet(key, "StaffId", list[i].StaffId);

                    Console.WriteLine(db.HashGet(key, list[i].Id));
                }
            }

            Console.ReadLine();
        }

        public static void SetTest()
        {
            List<UserInfoDto> list = new List<UserInfoDto>();
            DateTime dt = DateTime.Now;
            for (int i = 0; i < 10; i++)
            {
                list.Add(new UserInfoDto()
                {
                    Id = i,
                    LastLoginTime = dt,
                    Password = "password" + i.ToString(),
                    StaffId = "StaffId_" + i.ToString(),
                    StaffName = "StaffName_" + i.ToString()
                });
            }


            using (ConnectionMultiplexer conn = RedisHelper.RedisConn)
            {
                string key = "SetTest:";
                var db = conn.GetDatabase();
                db.KeyDelete(key);
                //string listKey = IdentityMap.CreateKey<UserInfoDto>();
                HashEntry[] items = new HashEntry[list.Count];
                for (int i = 0; i < list.Count; i++)
                {
                    string json = JsonConvert.SerializeObject(list[i]);
                    db.KeyDelete(key + list[i].Id.ToString());
                    //db.SetAdd(key + list[i].Id.ToString(), json);
                    db.SetAdd(key + list[i].Id.ToString() + ":name", list[i].StaffName);
                    db.SetAdd(key + list[i].Id.ToString() + ":StaffId", list[i].StaffId);

                    var result = db.SetScan(key, "*password99*").FirstOrDefault();
                    Console.WriteLine(result);
                }
            }
            Console.WriteLine("Complete!");

            Console.ReadLine();
        }

        public static void ListTest()
        {
            using (ConnectionMultiplexer conn = RedisHelper.RedisConn)
            {
                string key = "ListTest";
                var db = conn.GetDatabase();
                for (int i = 0; i < 10; i++)
                {
                    db.ListLeftPush(key, "string_"+i.ToString());
                }
                Console.WriteLine("写入完成");
                Console.ReadLine();

                while (0 != db.ListLength(key))
                {
                    //从redis数据库弹出List里的数据
                    var str = db.ListRightPop(key);
                    Console.WriteLine(str);
                }
                Console.ReadLine();
            }
        }

        public static void SortedSet()
        {
            List<UserInfoDto> list = new List<UserInfoDto>();
            for (int i = 0; i < 10; i++)
            {
                list.Add(new UserInfoDto()
                {
                    Id = i,
                    LastLoginTime = DateTime.Now,
                    Password = "password" + i.ToString(),
                    StaffId = "StaffId_" + i.ToString(),
                    StaffName = "StaffName_" + i.ToString()
                });
            }

            using (ConnectionMultiplexer conn = RedisHelper.RedisConn)
            {
                string key = "SortedSetTest:";
                var db = conn.GetDatabase();
                db.KeyDelete("SortedSetTest");

                foreach (var item in list)
                {
                    string json = JsonConvert.SerializeObject(item);
                    db.KeyDelete(key + item.Id.ToString());
                    db.KeyDelete("SortedSetTest" + item.Id.ToString() + ":name");
                    db.KeyDelete("SortedSetTest" + item.Id.ToString() + ":StaffId");
                    //db.SetAdd(key + list[i].Id.ToString(), json);
                    db.SortedSetAdd(key + item.Id.ToString() + ":name", item.StaffName, item.Id);
                    db.SortedSetAdd(key + item.Id.ToString() + ":StaffId", item.StaffName, item.Id);


                }

                Console.WriteLine("写入完成");
                Console.ReadLine();

                Console.WriteLine("读取两条记录");
                var result = db.SortedSetRangeByRank(key, 9, 10);
                for (int i = 0; i < result.Length; i++)
                {
                    Console.WriteLine(result[i]);
                }

                var result2 = db.SortedSetRangeByRankWithScores(key, 0, -1, Order.Descending);

                var result3 = db.SortedSetScan(key, "*99*", 10).ToList();
                for (int i = 0; i < result3.Count; i++)
                {
                    Console.WriteLine(result3[i]);
                }
                Console.ReadLine();

            }
        }
    }

RedisHelper.cs代码:

 public class RedisHelper
    {
        static ConfigurationOptions configurationOptions = ConfigurationOptions.Parse("127.0.0.1" + ":" + "6379");
        static ConnectionMultiplexer redisConn;

        public static ConnectionMultiplexer RedisConn
        {
            get
            {
                return ConnectionMultiplexer.Connect(configurationOptions);
            }     

        }
    }

UserInfoDto.cs代码:

 public class UserInfoDto
    {
        public int Id { get; set; }
        public string StaffId { get; set; }
        public string StaffName { get; set; }
        public string Password { get; set; }
        public System.DateTime LastLoginTime { get; set; }
    }

运行结果如图:

这里写图片描述


这里写图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在项目中安装 `StackExchange.Redis` 包。可以通过NuGet包管理器或者在项目文件中手动添加引用来完成安装。 以下是使用依赖注入方式连接redis使用的示例代码: ```csharp // Startup.cs using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using StackExchange.Redis; public class Startup { private readonly IConfiguration _configuration; public Startup(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // 注册 Redis 连接对象 services.AddSingleton<IConnectionMultiplexer>(provider => { string redisConnectionString = _configuration.GetConnectionString("RedisConnection"); return ConnectionMultiplexer.Connect(redisConnectionString); }); // 注册 Redis 数据库操作对象 services.AddScoped<IDatabase>(provider => { IConnectionMultiplexer redisConnection = provider.GetService<IConnectionMultiplexer>(); return redisConnection.GetDatabase(); }); // 注册其他服务 // ... } } ``` 在上面的示例代码中,我们首先注册了一个 `IConnectionMultiplexer` 类型的单例对象,该对象用于连接 Redis 数据库。然后,我们注册了一个 `IDatabase` 类型的对象,该对象用于操作 Redis 数据库中的数据。在注册 `IDatabase` 对象时,我们使用了 `AddScoped` 方法,这意味着每次请求都会创建一个新的 `IDatabase` 对象。 在代码中,我们还使用了 `IConfiguration` 对象来获取 Redis 数据库的连接字符串。我们需要在项目的 `appsettings.json` 文件中添加一个名为 `RedisConnection` 的连接字符串,例如: ```json { "ConnectionStrings": { "RedisConnection": "localhost:6379" } } ``` 有了上面这些注册之后,我们就可以在需要使用 Redis 数据库的服务中注入 `IDatabase` 对象了,例如: ```csharp // MyService.cs using StackExchange.Redis; public class MyService { private readonly IDatabase _redisDatabase; public MyService(IDatabase redisDatabase) { _redisDatabase = redisDatabase; } public void SetData(string key, string value) { _redisDatabase.StringSet(key, value); } public string GetData(string key) { return _redisDatabase.StringGet(key); } } ``` 在上面的示例代码中,我们注入了 `IDatabase` 对象,并在 `SetData` 和 `GetData` 方法中使用该对象进行 Redis 数据库的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值