嘈杂和忙碌的生活占据占据了生活的每一天,好久没有静下心来对自己喜欢的技术进行归纳总结了。痛定思痛,今天开始开荒,把之前研究的技术进行归纳总结,先从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. canvas图片编辑操作:缩放、移动、保存(PC端+移动端)

    最近在写canvas关于图片的操作,看了网上的代码基本都是不行的,于是就自己写了一个. html代码 <canvas id="myCanvas" width="37 ...

  2. Flutter 容器(7) - DecoratedBox

    DecoratedBox: 装饰容器,在其子widget绘制前(或后)绘制一个装饰Decoration(如背景.边框.渐变等) import 'package:flutter/material.dar ...

  3. 「查缺补漏」巩固你的RocketMQ知识体系

    Windows安装部署 下载 地址:[https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.2/rocketmq-all-4.5.2-bin- ...

  4. go chan 缓存与阻塞

    原文链接:Go语言第十一课 并发(三)Channel缓存与阻塞 Channel的缓存 前面介绍过channel的创建方法: channel_test := make(chan string) 其实它完 ...

  5. Linux环境下没有权限操作文件或目录

    linux下有超级用户(root)和普通用户,普通用户不能直接操作没有权限的目录,如果出现了没有权限的提示,可以尝试用su命令解决. 比如: #mkdir aaa 我要创建一个aaa的文件夹,没有操作 ...

  6. Linux环境下安装MySQL数据库

    Linux安装mysql服务分两种安装方法: (1).源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: (2).使用官方编译好的二进制文件安装,优 ...

  7. 算法-搜索(4)ISAM算法

    ISAM技术是一种典型的多叉搜索树结构,它使用了3级索引结构:主索引.柱面索引.磁道索引 所有数据记录在基本区按关键码升序排序,后一磁道所有关键码均大于前一磁道.在某一磁道插入新记录时,如果原来该磁道 ...

  8. 【转】python调用youtube-dl实现视频下载

    youtube-dl是一个命令行程序,用于从YouTube.com和更多网站下载视频.它需要Python解释器,版本2.6,2.7或3.2+,并且支持Unix,Windows或Mac OS X中运行. ...

  9. 牛客网PAT练习场-数素数

    题解:就是一道素数筛选法 题目地址:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799 /** * C ...

  10. 使用ClickHouse表函数将MySQL数据导入到ClickHouse

    #clickhouse-client :create database dw; :use dw; --导入数据: CREATE TABLE Orders ENGINE = MergeTree ORDE ...