当前位置: 首页 > news >正文

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();
        }

相关文章:

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

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

AlexNet的出现推动深度学习的巨大发展

尽管AlexNet&#xff08;2012&#xff09;的代码只比LeNet&#xff08;1998&#xff09;多出几行&#xff0c;但学术界花了很多年才接受深度学习这一概念&#xff0c;并应用其出色的实验结果。 AlexNet&#xff08;由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton共同设计…...

2024面试offer收割宝典字节篇

1.IO 模型有哪些,讲讲你理解的 nio ,他和 bio,aio 的区别是啥, 谈谈 reactor 模型。 IO 模型主要包括以下几种:1. 阻塞 I/O (BIO): 当一个线程调用 read() 或 write() 系统调用时,如果数据没有准备好或者缓冲区已满,则该线程会被操作系统阻塞,直到有数据可读或写入完…...

冒泡排序及其优化

冒泡排序 int[] arr {1,3,2,9,4,7,2,8};//比较多少轮(n个数字比较n-1次)for(int i0,n arr.length;i<n-1;i) {//每轮比较多少次(n-1-i次)for(int j 0;j<n-1-i;j) {//两两比较if(arr[j] > arr[j1]) { //比较结果为升序排列&#xff0c;如果想要降序排列结果将 >…...

【医学大模型 补全主诉】BioGPT + LSTM 自动补全医院紧急部门主诉

BioGPT LSTM 自动补全医院紧急部门主诉 问题&#xff1a;针对在紧急部门中自动补全主诉的问题子问题1: 提高主诉记录的准确性子问题2: 加快主诉记录的速度子问题3: 统一医疗术语的使用子问题4: 减少打字错误和误解子问题5: 提高非特定主诉的处理能力 解法数据预处理神经网络方…...

HCIE-Datacom证书有效期多久?HCIE考试有哪些内容?

如今越来越多的人开始关注并参与到华为认证的学习中来。 其中&#xff0c;华为认证数据通信专家(HCIE-Datacom)作为华为认证体系中的高级认证&#xff0c;备受瞩目。 那么&#xff0c;关于HCIE-Datacom证书的有效期以及HCIE考试的内容&#xff0c;你知道多少呢&#xff1f;下…...

OpenCV中的边缘检测技术及实现

边缘检测是在电脑如何理解图片这一问题中的一环&#xff0c;它帮助电脑找出照片里的轮廓和分界线。想象一下你在看一幅黑白漫画&#xff0c;轮廓线定义了每一个角色和物体&#xff0c;而电脑要做的&#xff0c;就是通过边缘检测来找出这些线条。这在很多像是图像分析这样的领域…...

机器学习基础(一)理解机器学习的本质

导读&#xff1a;在本文中&#xff0c;将深入探索机器学习的根本原理&#xff0c;包括基本概念、分类及如何通过构建预测模型来应用这些理论。 目录 机器学习 机器学习概念 相关概念 机器学习根本&#xff1a;模型 数据的语言&#xff1a;特征与标签 训练与测试&#xf…...

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

Sora:新一代实时音视频通信框架

一、Sora简介 Sora是一个开源的实时音视频通信框架&#xff0c;旨在提供高效、稳定、可扩展的音视频通信解决方案。它基于WebRTC技术&#xff0c;支持跨平台、跨浏览器的实时音视频通信&#xff0c;并且具备低延迟、高并发、易集成等特点。 --点击进入Sora(一定要科学哦&#x…...

龟兔赛跑算法

一、题目 给定一个长度为 n1 的数组nums&#xff0c;数组中所有的数均在 1∼n1 的范围内&#xff0c;其中 n≥1。 请找出数组中任意一个重复的数。 样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。 二、解析 解决这个问题的一种有效方法是使用快慢指针&#xf…...

Yii2项目使用composer异常记录

问题描述 在yii2项目中&#xff0c;使用require命令安装依赖时&#xff0c;出现如下错误提示 该提示意思是&#xff1a;composer运行时&#xff0c;执行了yiisoft/yii2-composer目录下的插件&#xff0c;但是该插件使用的API版本是1.0&#xff0c;但是当前的cmposer版本提供的…...

【蓝桥杯 2021】图像模糊

图像模糊 题目描述 小蓝有一张黑白图像&#xff0c;由 nm 个像素组成&#xff0c;其中从上到下共 n 行&#xff0c;每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。 现在&#xff0c;小蓝准备对图像进行模糊操作&#xff0c;操作的方法为&#xff1a; 对于…...

【leetcode】贪心算法介绍

详细且全面地分析贪心算法常用的解题套路、数据结构和代码逻辑如下&#xff1a; 找最值型&#xff1a; 每一步选择都是局部最优解&#xff0c;最后得到的结果就是全局最优解。常用于找零钱问题、区间覆盖问题等。一般情况下&#xff0c;可以通过排序将数据进行处理&#xff0c;…...

com.alibaba.fastjson.JSONException: toJSON error的原因

问题&#xff1a; 导出接口报错&#xff0c;显示json格式化异常 发现问题&#xff1a; 第一个参数为HttpResponse,转换成json的时候报错 修改方法&#xff1a; 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…...

华为配置旁挂二层组网直接转发示例

配置旁挂二层组网直接转发示例 组网图形 图1 配置旁挂二层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…...

OLMo 以促进语言模型科学之名 —— OLMo Accelerating the Science of Language Models —— 全文翻译

OLMo: Accelerating the Science of Language Models OLMo 以促进语言模型科学之名 摘要 语言模型在自然语言处理的研究中和商业产品中已经变得无所不在。因为其商业上的重要性激增&#xff0c;所以&#xff0c;其中最强大的模型已经闭源&#xff0c;控制在专有接口之中&#…...

单例模式双端检测详解

正确写出doublecheck的单例模式_double check单例模式-CSDN博客...

秦PLUS荣耀版7.98万元起震撼上市,拉开“电比油低”大幕

2月19日&#xff0c;秦PLUS荣耀版正式上市&#xff0c;五大颠覆、三大焕新刷新A轿体验新高度。DM-i版本5款车型&#xff0c;官方指导价7.98万元——12.58万元&#xff1b;EV版本5款车型&#xff0c;官方指导价10.98万元——13.98万元。正式开启“电比油低”新时代。 电比油低&a…...

学习总结19

# 奶牛的耳语 ## 题目描述 在你的养牛场&#xff0c;所有的奶牛都养在一排呈直线的牛栏中。一共有 n 头奶牛&#xff0c;其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi(0< pi < 10^8) 来表示。在无聊的日子里&#xff0c;奶牛们常常在自己的牛栏里与其它奶牛交…...

限流算法详解 - 滑动窗口算法深入理解

滑动窗口算法详解 专门针对滑动窗口算法&#xff0c;从原理到精确限流的实现细节做一个深入剖析。 一、核心思想 固定窗口在时间边界处会出现“计数突跳”&#xff0c;原因是窗口的边界是硬重置的&#xff08;0→1秒末清空&#xff0c;1→2秒初重新计数&#xff09;。 滑动窗口…...

spring源码bean生命周期篇 五 如何解决循环依赖

一.spring循环依赖 1. 什么是循环依赖&#xff1f; bean的生命周期前面的章节我们有讲解过大量的源码&#xff0c;我们粗略的分为这几步 spring扫描class获取BeanDefintionspring根据BeanDefintion实例化bean创建bean之前需要实例化对象&#xff0c;实例化后填充原始对象中的属…...

基于SpringCloud的微服务架构技术研究

随着互联网技术与校园信息化建设的快速发展&#xff0c;传统单体架构系统在业务迭代、功能扩展、并发处理与后期维护方面逐渐暴露出诸多短板。单体架构将所有业务逻辑、数据接口与功能模块耦合在同一个项目中&#xff0c;在系统体量较小、业务需求简单的场景下能够满足开发需求…...

Java 读写 Excel 公式:从基础到高级的实战总结

做数据处理的朋友应该都遇到过这种场景&#xff1a;需要批量生成带公式的Excel报表&#xff0c;或者读取现有表格中的公式进行二次计算。以前我都是手动在Excel里写公式&#xff0c;后来发现用Java代码来处理更高效&#xff0c;尤其是数据量大的时候。 今天整理一下平时用得比较…...

Unity脚本修改源资源的底层机制与高危避坑指南

1. 这不是“改个文件”那么简单&#xff1a;Unity里脚本动源资源的真实边界与风险认知很多人第一次在Unity里写AssetDatabase.SaveAssets()时&#xff0c;心里想的是&#xff1a;“不就是保存一下修改嘛&#xff0c;跟编辑器里点CtrlS一样简单。”我当年也是这么想的——直到上…...

JMeter精准控制1 QPS的底层原理与三种实战方案

1. 这不是“设个线程数”就能搞定的事很多人第一次用Jmeter做压测&#xff0c;看到“我要每秒发1个请求”&#xff0c;第一反应是&#xff1a;开1个线程&#xff0c;Ramp-up时间设为1秒&#xff0c;循环次数设无限——结果一跑起来&#xff0c;发现TPS忽高忽低&#xff0c;有时…...

泳装电商运营——AI驱动增长新引擎

泳装电商运营——AI驱动增长新引擎泳装旺季营销攻略&#xff1a;如何用AI工具实现销量翻倍&#xff1f;泳装行业的季节性特征明显&#xff0c;旺季不旺是很多商家的痛点。如何在短短几个月的销售窗口期内最大化产出&#xff1f;北京先智先行科技有限公司的一站式AI营销解决方案…...

SAP LeanIX: 从“手工台账”到“EA中枢“

在上一篇文章中&#xff0c;我们跟着PumpTech走完了一整圈——从体检、找堵点、数据验证&#xff0c;到画目标蓝图、排路线图。最后我们提炼了一套“五步法”和一个“三维评估矩阵”&#xff0c;算是把EA方法论从书本拽到了地上。 但故事讲完后&#xff0c;有一个问题始终悬而…...

AI代理运行时基础设施:从上下文溢出到可审计事件日志

1. 这不是新赛道&#xff0c;是 runtime 层的“操作系统时刻”来了你有没有在深夜调试一个跑了三小时的 AI 代理&#xff0c;突然发现它开始胡言乱语&#xff1f;不是模型崩了&#xff0c;不是 prompt 写错了&#xff0c;而是——它的“记忆”被挤掉了。上下文窗口就那么大&…...

贵州方言语音AI落地难?从数据采集、音素映射到MOS评分提升至4.1的5步攻坚法

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;贵州方言语音AI落地难&#xff1f;从数据采集、音素映射到MOS评分提升至4.1的5步攻坚法 贵州方言语音AI落地长期受限于语料稀疏、音系复杂、声调连续变调频繁等现实瓶颈。我们联合黔东南州苗族侗族自治州语言…...