Azure技术系列之Redis篇---第一章数据缓存
嘈杂和忙碌的生活占据占据了生活的每一天,好久没有静下心来对自己喜欢的技术进行归纳总结了。痛定思痛,今天开始开荒,把之前研究的技术进行归纳总结,先从Azure的Redis的开发技术开始。

Azure 的Redis是一个PaaS服务,它已经对Redis的高可用和集群进行了完美的封装,我们就不需要对Redis的搭建和维护投人太多的精力,如果自己搭建,网上也是有很多的资料,这不是本篇要讲的。但是我简单描述一下Azure 的Redis 提供了三个档次的服务,即基本层、Standard层,Premium层,把Azure Redis的服务从吞吐量、延迟性最大连接数进行了服务级别的划分。生产环境强烈建议采用Standard层或Premium层。具体参数可以参考Azure的标准文档 https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-overview。
Azure 的Redis 的单个实例默认是包含16个Redis库,我们可以通过Redis Desktop Manager 小工具进行查看,如下图。不同的业务可以存放到不同的Redis仓库里面。

回归主题,Redis是进行云项目开发最常用的组件服务之一,使用Redis之前,需要在项目里面引用StackExchange.Redis Nuget包,然后就可以使用StackExchange.Redis组件库封装的各种方法了。Redis 主要提供以下数据类型的缓存,String、Hash、List,Set等。下面的示例代码讲对每种数据类型进行演示。
private Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(ConfigurationManager.ConnectionStrings["redis"].ConnectionString);
});
private ConnectionMultiplexer Connection => lazyConnection.Value;
/// <summary>
/// 缓存章节
/// </summary>
public void CacheSection()
{
IDatabase cacheDatabase = this.Connection.GetDatabase();
//String 类型缓存,最基础结构,也是最底层结构
cacheDatabase.StringSet("test_string", "hello vincent,this is string test.");
Console.WriteLine("Cache StringSet : " + cacheDatabase.StringGet("test_string"));
cacheDatabase.KeyDelete("test_string");
Console.WriteLine("Cache StringSet : " + cacheDatabase.StringGet("test_string")); //Hash 类型缓存,用于对象的键值对的场景
Dictionary<string, string> dictHash = new Dictionary<string, string>();
dictHash.Add("Name", "Vincent");
dictHash.Add("Gender", "Man");
dictHash.Add("Age", "");
dictHash.Add("Address", "Tianjin"); cacheDatabase.HashSet("Vincent_Hash", dictHash.Select(i => new HashEntry(i.Key, i.Value)).ToArray());
Console.WriteLine("Cache Hash :My Address:" + cacheDatabase.HashGet("Vincent_Hash", "Address")); var lstHash = cacheDatabase.HashGetAll("Vincent_Hash");
foreach (var item in lstHash)
{
Console.WriteLine("Cache Hash :" + item.Name + ":" + item.Value);
}
cacheDatabase.KeyDelete("Vincent_Hash"); //List 类型缓存,可以按照一定的顺序进行缓存对象管理场景
for (int i = ; i < ; i++)
{
cacheDatabase.ListRightPush("test_List", "ListValue_" + i.ToString("D4"));
}
for (int i = ; i < ; i++)
{
Console.WriteLine("Cache List :Right_" + cacheDatabase.ListGetByIndex("test_List", i - ));
}
for (int i = ; i < ; i++)
{
Console.WriteLine("Cache List :Left_" + cacheDatabase.ListLeftPop("test_List"));
}
cacheDatabase.KeyDelete("test_List"); //Set 类型缓存,满足不重复元素的集合场景,进行全局数据去重
cacheDatabase.SetAdd("test_Set", "Hello Vincent");
cacheDatabase.SetAdd("test_Set", "Hello Vincent");
Console.WriteLine("Cache Set :" + cacheDatabase.SetPop("test_Set"));
Console.WriteLine("Cache Set :" + cacheDatabase.SetPop("test_Set"));
}
Azure技术系列之Redis篇---第一章数据缓存的更多相关文章
- ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇
ASP.NET自定义控件组件开发 第一章 第三篇 第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...
- Java语言程序设计(基础篇)第一章
第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...
- 《Ansible自动化运维:技术与佳实践》第一章读书笔记
Ansible 架构及特点 第一章主要讲的是 Ansible 架构及特点,主要包含以下内容: Ansible 软件 Ansible 架构模式 Ansible 特性 Ansible 软件 Ansible ...
- redis实现mysql的数据缓存
环境设定base2 172.25.78.12 nginx+phpbase3 172.25.78.13 redis端base4 172.25.78.14 mysql端# 1.在base2(nginx+p ...
- 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯
1 前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...
- DirectX9:基础篇 第一章 初始化Direct3D
一.简介 二.Direct3D类 1.创建D3D类 IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion); //Direct3D类的创建 IDirec ...
- 第一章使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础
一:为什么需要动态网页 由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页 ①:动态网页是指在服务器端运行的,使用程序语言设 ...
- 顶级c程序员之路 基础篇 - 第一章 关键字的深度理解 number-1
c语言有32个关键字,每个关键字你都理解吗? 今天出场的是: auto , register, static, extern 为什么他们会一起呢,说到这里不得不谈到c语言对变量的描述. c给每 ...
- Java编程基础篇第一章
计算机语言 人与计算机交流的方式. 计算机语言有很多种如:C语言,c++,Java等 人机交互 软件的出现实现了人与计算机之间的更好的交流(交互) 交互方式 图形化界面:便于交互,容易操作,简单直观, ...
随机推荐
- C#经典算法实践,回顾往生,更是致敬《算法导论》
该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/666 访问. 概述 本系列博文将会向大家介绍本人在钻研<算法导论 ...
- Vue 使用$set动态给数据设置属性
在实际的开发过程中,给表单元素绑定model的时候,绑定的元素的属性是根据后台数据动态生成的.如果使用常规的赋值方式,是无法更新视图的 需要使用, this.$set(dataName,keyName ...
- MongoDB学习3:聚合查询
1. 什么是MongoDB聚合框架 1.1 MongoDB聚合框架(Aggregation Frameworn)是一个计算框架,它可以: ● 作用在一个或几个集合上 ● 对集合中的数据 ...
- Jmeter(二十一) - 从入门到精通 - JMeter断言 - 上篇(详解教程)
1.简介 最近由于宏哥在搭建自己的个人博客可能更新的有点慢.断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式.虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JM ...
- 初期web渗透的学习路线
成长路线 信息安全 前端安全 web安全 基础,书籍推荐 <网站入侵与脚本攻防修炼> 什么是web漏洞 什么是sql注入漏洞 什么是数据库 什么是文件上传漏洞 什么是跨站脚本攻击 < ...
- 《Java从入门到失业》第二章:Java环境(四):IDE集成环境
2.4IDE集成环境 在掌握了编写.编译和运行Java程序的基本步骤以后,你肯定就在想,这太麻烦了,有没有更好的工具?当然有了,那就是IDE.IDE就是专业的集成开发环境(Integrated Dev ...
- leetcode刷题记录——栈和队列
题目 232.用栈实现队列 class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack&l ...
- 蓝牙bluez命令
记录一下自己平时调试蓝牙的命令,后续学习到再添加 sdptool命令: sdptool add SP - 添加SPP: sdptool add --channel=1 DID SP DUN LA ...
- 怎么下载chrome的扩展程序
很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展 ...
- php最好的开发工具合集
欲先攻其事必先利其器,新接触pphp的小伙伴们,你们可要注意阅读本文了哦! 常见好用的php开发工具汇总 1.SublimeText3 工具简介: Sublime Text是一款目前非常流行的代码编辑 ...