C# 菜鸟级别有关于redis的使用

        public IActionResult Index()
        {
            ConnectionMultiplexer _conn = ConnectionMultiplexer.Connect("127.0.0.1:6379");//初始化
            var database = _conn.GetDatabase(7);//指定连接的库 0
            RedisHelper redisHelper = new RedisHelper("4");


            bool r1 = redisHelper.SetValue("key", "Hello Word!");
            if (r1)
            {
                Console.WriteLine(redisHelper.GetValue("key"));
                //redisHelper.DeleteKey("key");
            }


            RedisCacheHelper.Add("zhong", "zhongzhongzhong", DateTime.Now.AddDays(1));

            string name = database.StringGet("name");
            string age = database.StringGet("age");
            var tran = database.CreateTransaction();//创建事物
            tran.AddCondition(Condition.StringEqual("name", name));//乐观锁
            tran.StringSetAsync("name", "海");
            tran.StringSetAsync("age", 25);
            database.StringSet("name", "Cang");//此时更改 name 值,提交事物的时候会失败。
            bool committed = tran.Execute();//提交事物,true成功,false回滚。

            string str3 = RedisCacheHelper.Get<string>("zhong");

            string str = RedisCacheHelper.Get<string>("nihao");

            string str1 = RedisCacheHelper.Get<string>("wei");


            database.StringSet("name", "苍");//设置StringSet(key, value)
            string str2 = database.StringGet("name");//结果:苍
            database.StringSet("name_two", str2, TimeSpan.FromSeconds(10));//设置时间,10s后过期。


            //创建对象
            Demo demo = new Demo()
            {
                Name = "苍",
                Age = 18,
                Height = 1.83
            };
            string demojson = JsonConvert.SerializeObject(demo);//序列化
            database.StringSet("model", demojson);

            string model = database.StringGet("model");
            demo = JsonConvert.DeserializeObject<Demo>(model);//反序列化


            double increment = 0;
            double decrement = 0;
            for (int i = 0; i < 3; i++)
            {
                increment = database.StringIncrement("StringIncrement", 2);//增量,每次+2
            }
            for (int i = 0; i < 3; i++)
            {
                decrement = database.StringDecrement("StringIncrement");//减量,每次-1
            }


            for (int i = 0; i < 10; i++)
            {
                database.ListRightPush("list", i);//从底部插入数据
            }
            for (int i = 10; i < 20; i++)
            {
                database.ListLeftPush("list", i);//从顶部插入数据
            }
            var length = database.ListLength("list");//长度 20

            var rightPop = database.ListRange("list");//从底部拿出数据var leftpop = database.ListLeftPop("list");//从顶部拿出数据var list = database.ListRange("list");


            string json = JsonConvert.SerializeObject(demo);//序列化
            database.HashSet("user", "cang", json);
            database.HashSet("user", "shan", json);
            database.HashSet("user", "yun", json);
            //获取Model
            string hashcang = database.HashGet("user", "cang");
            demo = JsonConvert.DeserializeObject<Demo>(hashcang);//反序列化

            //获取List
            RedisValue[] values = database.HashValues("user");//获取所有value
            IList<Demo> demolist = new List<Demo>();
            foreach (var item in values)
            {
                Demo hashmodel = JsonConvert.DeserializeObject<Demo>(item);
                demolist.Add(hashmodel);
            }

            ISubscriber sub = _conn.GetSubscriber();

            //订阅 Channel1 频道
            sub.Subscribe("Channel1", new Action<RedisChannel, RedisValue>((channel, message) =>
            {
                Console.WriteLine("Channel1" + " 订阅收到消息:" + message);
            }));

            for (int i = 0; i < 10; i++)
            {
                sub.Publish("Channel1", "msg" + i);//向频道 Channel1 发送信息
                if (i == 2)
                {
                    sub.Unsubscribe("Channel1");//取消订阅
                }
            }

            var batch = database.CreateBatch();

            //批量写
            Task t1 = batch.StringSetAsync("name", "羽");
            Task t2 = batch.StringSetAsync("age", 22);
            batch.Execute();
            Task.WaitAll(t1, t2);
            Console.WriteLine("Age:" + database.StringGet("age"));
            Console.WriteLine("Name:" + database.StringGet("name"));

            //批量写
            for (int i = 0; i < 100000; i++)
            {
                batch.StringSetAsync("age" + i, i);
            }
            batch.Execute();

            //批量读
            List<Task<RedisValue>> valueList = new List<Task<RedisValue>>();
            for (int i = 0; i < 10000; i++)
            {
                Task<RedisValue> tres = batch.StringGetAsync("age" + i);
                valueList.Add(tres);
            }
            batch.Execute();
            foreach (var redisValue in valueList)
            {
                string value = redisValue.Result;//取出对应的value值
            }


            //ConfigurationBuilder builder = new ConfigurationBuilder();
            //builder.AddJsonFile("appsettings.json");
            //var configuration = builder.Build();
            //var collections = configuration.AsEnumerable();
            //foreach (var item in collections)
            //{
            //    Console.WriteLine("{0}={1}", item.Key, item.Value);
            //}

            return View();
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【react】react中和vue中的provide/inject、context写法示例

react写法 在 React 中&#xff0c;provide和inject的功能类似于 Vue.js 中的 provide和inject。它们都是用于跨组件层次传递数据的。 在 React 中&#xff0c;没有内置的 provide 和 inject 函数。但是&#xff0c;你可以使用 React 的 Context 来实现类似的功能。 Context…

基于STM32F407的coreJSON使用教程

目录 概述 工程建立 代码集成 函数介绍 使用示例 概述 coreJSON是FreeRTOS中的一个组件库&#xff0c;支持key查找的解析器&#xff0c;他只是一个解析器&#xff0c;不能生成json数据。同时严格执行 ECMA-404 JSON 标准。该库用 C 语言编写&#xff0c;设计符合 ISO C90…

grpc-go通过context传递额外数据

使用 ctx.Value 从 context 读取数据 // ValueFromIncomingContext returns the metadata value corresponding to the metadata // key from the incoming metadata if it exists. Key must be lower-case. // // # Experimental // // Notice: This API is EXPERIMENTAL and…

基于Java SSM框架实现生鲜食品o2o商城系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现生鲜食品o2o商城系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 生鲜食品o2o商城系统&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、用户…

数学建模:BP神经网络(含python实现)

原理 BP 神经网络&#xff0c;也称为多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;&#xff0c;是一种常见的神经网络模型&#xff0c;用于解决各种机器学习问题&#xff0c;包括分类和回归。BP 代表“反向传播”&#xff08;Backpropagation&#…

领域驱动设计(Domain Driven Design)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、场景和要求二、领域模型关键词1.领域2.子域3.通用语言4.限界上下文5.领域模型6.实体和值对象7.聚合根8.领域服务9.领域事件 总结 前言 Domain Driven Desi…

备战蓝桥杯---动态规划(应用1)

话不多说&#xff0c;直接看题&#xff1a; 首先我们考虑暴力&#xff0c;用二维前缀和即可&#xff0c;复杂度为o(n^4). 其实&#xff0c;我们不妨枚举任意2行&#xff0c;枚举以这个为边界的最大矩阵。 我们把其中的每一列前缀和维护出来&#xff0c;相当于把一个矩阵压缩成…

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码&#xff0c;而这次需要分析的就是78、79行的两个中断。首先&#xff0c;需要确认NVIC_SYSPRI2寄存器的作用。 进一…

阿里云香港服务器是cn2吗?怎么测试?

阿里云服务器是CN2线路吗&#xff1f;云服务器BGP多线精品网络线路是cn2&#xff0c;香港轻量应用服务器不是cn2。 如何测试是不是中国电信cn2网络线路&#xff1f;可以本地公网 mtr 该公网IP地址看下是否走的CN2线路&#xff1a; 163骨干网出国的最后一跳IP开头是202.97CN2 …

PostgreSQL使用session_exec和file_fdw实现失败次数锁定用户策略

使用session_exec 、file_fdw以及自定义函数实现该功能。 缺陷&#xff1a;实测发现锁用户后&#xff0c;进去解锁特定用户。只能允许一次登陆&#xff0c;应该再次登陆的时候&#xff0c;触发函数&#xff0c;把之前的日志里的错误登陆的信息也计算到登录次数里了。而且foreig…

macOS上使用VScode编译配置C++语言开发环境

本文介绍macOS上使用VScode编译配置C语言开发环境 1.准备工作 安装C/C插件 2.配置c_cpp_properties.json文件 [⇧⌘P]打开命令模式&#xff0c;选择[C/Cpp: Edit Configurations(JSON)]命令&#xff0c;回车后会自动生成一个.vscode目录&#xff0c;目录下有一个c_cpp_prope…

算法-链表操作

题目 1&#xff09;输入链表头节点&#xff0c;奇数长度返回中点&#xff0c;偶数长度返回上中点 2&#xff09;输入链表头节点&#xff0c;奇数长度返回中点&#xff0c;偶数长度返回下中点 3&#xff09;输入链表头节点&#xff0c;奇数长度返回中点前一个&#xff0c;偶数长…

SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个?

文章目录 一、介绍1、支持的类型2、日志级别 二、实战1、logback2、Log4j2 三、总结 一、介绍 1、支持的类型 SpringBoot支持多种日志框架&#xff0c;包括Logback、Log4j2和Java Util Logging&#xff08;JUL&#xff09;。默认情况下&#xff0c;如果你使用SpringBoot的sta…

数学在现代经济学研究中的作用

数学在现代经济学研究中的作用 The Role of Mathematics in Modern Economic Research 经济学&#xff0c;作为一门研究人类如何在资源有限的情况下做出选择的社会科学&#xff0c;历来都与数学有着紧密的联系。随着科技的发展&#xff0c;特别是在信息时代数据量的爆炸性增长&…

【漏洞复现】H3C 路由器多系列信息泄露漏洞

Nx01 产品简介 H3C路由器是一款高性能的路由器产品&#xff0c;具有稳定的性能和丰富的功能。它采用了先进的路由技术和安全机制&#xff0c;可以满足不同用户的需求&#xff0c;广泛应用于企业、运营商和数据中心等领域。 Nx02 漏洞描述 H3C路由器多系列存在信息泄露漏洞&…

林浩然与杨凌芸的Java奇遇记:Map世界的恋爱攻略

林浩然与杨凌芸的Java奇遇记&#xff1a;Map世界的恋爱攻略 The Java Adventure of Lin Haoran and Yang Lingyun: Love Strategy in the Map World 在一个充满代码香气的世界里&#xff0c;男主角林浩然&#xff0c;一个热衷于Java编程的程序员大侠&#xff0c;以其深厚的内功…

K8s进阶之路-核心概念/架构:

架构&#xff1a;Master/Node Master组件--主控节点{ 负责集群管理&#xff08;接收用户事件转化成任务分散到node节点上&#xff09;} Apiserver&#xff1a; 资源操作的唯一入口&#xff0c;提供认证、授权、API注册和发现等机制 Scheduler &#xff1a; 负责集群资源调度&am…

【CentOS】Linux 文件与目录管理

目录 1、目录的切换、新增和删除 &#xff08;1&#xff09;cd (change directory&#xff0c;切换目录) &#xff08;2&#xff09;pwd (显示目前所在的目录) &#xff08;3&#xff09;mkdir (make directory&#xff0c;建立新目录 ) &#xff08;4&#xff09;rmdir (…

基于SSM的疫情期间学生信息管理平台的设计与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的疫情期间学生信息管理平台的设计与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

CSS 实现 3D 书本展开动效

一、前言 本文将使用纯 CSS 实现一个简单的 3D 书本展开动效。 二、实现思路 实现这么一个书本动效 乍一看可能会感觉有些复杂&#xff0c;实际上并不难&#xff0c;遇到这种组合动效的需求时&#xff0c;我们只要将整体拆分成多个小步骤去做&#xff0c;就很简单了。 1. 拆…