嘈杂和忙碌的生活占据占据了生活的每一天,好久没有静下心来对自己喜欢的技术进行归纳总结了。痛定思痛,今天开始开荒,把之前研究的技术进行归纳总结,先从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篇---第一章数据缓存的更多相关文章

  1. ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇

    ASP.NET自定义控件组件开发 第一章 第三篇   第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...

  2. Java语言程序设计(基础篇)第一章

    第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...

  3. 《Ansible自动化运维:技术与佳实践》第一章读书笔记

    Ansible 架构及特点 第一章主要讲的是 Ansible 架构及特点,主要包含以下内容: Ansible 软件 Ansible 架构模式 Ansible 特性 Ansible 软件 Ansible ...

  4. redis实现mysql的数据缓存

    环境设定base2 172.25.78.12 nginx+phpbase3 172.25.78.13 redis端base4 172.25.78.14 mysql端# 1.在base2(nginx+p ...

  5. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

  6. DirectX9:基础篇 第一章 初始化Direct3D

    一.简介 二.Direct3D类 1.创建D3D类 IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion); //Direct3D类的创建 IDirec ...

  7. 第一章使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设 ...

  8. 顶级c程序员之路 基础篇 - 第一章 关键字的深度理解 number-1

    c语言有32个关键字,每个关键字你都理解吗? 今天出场的是: auto ,  register,  static,   extern 为什么他们会一起呢,说到这里不得不谈到c语言对变量的描述. c给每 ...

  9. Java编程基础篇第一章

    计算机语言 人与计算机交流的方式. 计算机语言有很多种如:C语言,c++,Java等 人机交互 软件的出现实现了人与计算机之间的更好的交流(交互) 交互方式 图形化界面:便于交互,容易操作,简单直观, ...

随机推荐

  1. 2020-06-27:ACID是什么?描述一下?

    福哥答案2020-06-27: 福哥口诀法:事原一隔持(事务属性ACID:原子性.一致性.隔离性.持久性) 用银行数据库来举例子解释一下这四个特性 原子性: 一个事务可能会包含多种操作,比如转账操作包 ...

  2. 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)

    目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...

  3. C#LeetCode刷题之#217-存在重复元素(Contains Duplicate)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3772 访问. 给定一个整数数组,判断是否存在重复元素. 如果任何 ...

  4. [C/C++]快速读入代码(快读)

    快读 1.为什么要有快读 好吧,有些题目看上去十分简单,例如https://www.luogu.com.cn/problem/P4305这道题,实际上数据量巨多,光是一个测试点就可能有几个MB,在这种 ...

  5. idea Maven项目 包下载不下来或者已经下载了就是飘红

    0.先在settings.xml加上阿里的镜像在刷新试试 <mirror> <id>aliyunmaven</id> <mirrorOf>*</m ...

  6. python 04 分支和循环

    创建一个框架  名字.py 打飞机游戏 加载音乐 播放音乐 我打飞机诞生 inter=0 while true: if 用户是否惦记了关闭: 退出程序 bleak inter+=1 if inter ...

  7. golang map 声明,赋值

    参考链接:https://blog.csdn.net/wide288/article/details/84303511 // 先声明map var m1 map[string]string// 再使用 ...

  8. Java中枚举的常见用法

    在JDK1.5以后引入了一种新的类型,就是枚举(enum).enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外, 其他类型的如字母.特殊符号.汉 ...

  9. 第1篇 Scrum冲刺博客

    一.Alpha阶段各成员任务 梁天龙 任务名称 预计工时  编辑历史记录  2  登陆按键设计  3  考勤记录页面 2  人数记录页面  2  学习课程页面 4  建议页面  2 黄岳康 任务名称 ...

  10. classmethod与staticmethod

    1.classmethod   @classmethod # 把一个对象绑定的方法 修改成一个 类方法第一,在方法中仍然可以引用类中的静态变量第二,可以不用实例化对象,就直接用类名在外部调用这个方法什 ...