分布式缓存 Redis(二)
代码实例
namespace RedisTest
{
class Program
{
static void Main(string[] args)
{
Student stu = RedisOperator.Instance.Get<Student>("stu");
RedisOperator.Instance.Set<Student>("stu", new Student { Id = , Name = "bb" }, );
Student stu1 = RedisOperator.Instance.Get<Student>("stu");
Console.ReadKey();
}
}
class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}
控制台 program
using ServiceStack.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace RedisTest
{
/// <summary>
/// Install-Package ServiceStack.Redis
/// </summary>
public class RedisManager
{
/// <summary>
/// RedisManager类主要是创建链接池管理对象的
/// </summary>
private static string RedisPath = System.Configuration.ConfigurationManager.AppSettings["RedisPath"];
private static PooledRedisClientManager _prcm; /// <summary>
/// 静态构造方法,初始化链接池管理对象
/// </summary>
static RedisManager()
{
CreateManager();
} /// <summary>
/// 创建链接池管理对象
/// </summary>
private static void CreateManager()
{
_prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });
} private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
{
//WriteServerList:可写的Redis链接地址。
//ReadServerList:可读的Redis链接地址。
//MaxWritePoolSize:最大写链接数。
//MaxReadPoolSize:最大读链接数。
//AutoStart:自动重启。
//LocalCacheTime:本地缓存到期时间,单位:秒。
//RecordeLog:是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项。
//RedisConfigInfo类是记录redis连接信息,此信息和配置文件中的RedisConfig相呼应 // 支持读写分离,均衡负载
return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize = , // “写”链接池链接数
MaxReadPoolSize = , // “读”链接池链接数
AutoStart = true,
});
} private static IEnumerable<string> SplitString(string strSource, string split)
{
return strSource.Split(split.ToArray());
} /// <summary>
/// 客户端缓存操作对象
/// </summary>
public static IRedisClient GetClient()
{
if (_prcm == null)
{
CreateManager();
}
return _prcm.GetClient();
}
} }
RedisManager
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ServiceStack.Redis;
using ServiceStack.Redis.Support; namespace RedisTest
{
public class RedisOperator:IDisposable
{
private IRedisClient _redis;
private int _defaultSessionMinute = ;
public RedisOperator()
{
this._redis = RedisManager.GetClient();
string RedisSessionTimeOutMinute = System.Configuration.ConfigurationManager.AppSettings["RedisSessionTimeOutMinute"];
if (!string.IsNullOrEmpty(RedisSessionTimeOutMinute) && !int.TryParse(RedisSessionTimeOutMinute, out this._defaultSessionMinute))
{
this._defaultSessionMinute = ;
}
}
private static RedisOperator _instance;
private static object lockobj = new object();
public static RedisOperator Instance {
get
{
if (_instance == null)
{
lock (lockobj)
{
if (_instance == null)
{
_instance = new RedisOperator();
}
}
}
return _instance;
} } public void Set<T>(string key, T obj, double minuteOut = )
{
if (minuteOut >= )
{
if (minuteOut == )
minuteOut = this._defaultSessionMinute;
this._redis.Set<T>(key, obj, TimeSpan.FromMinutes(minuteOut));
}
else
{
this._redis.Set<T>(key, obj);
}
} public T Get<T>(string key)
{
return this._redis.Get<T>(key);
} public bool Remove(string key)
{
return this._redis.Remove(key);
} public void Dispose()
{
try
{
if (this._redis != null)
this._redis.Dispose();
}
catch (Exception ex)
{ }
}
}
}
RedisOperator
webConfig
<appSettings>
<!--Redis 配置 -->
<add key="RedisPath" value="127.0.0.1:6379" />
<add key="RedisSessionTimeOutMinute" value="20" />
</appSettings>
1.Redis Manager 用于处理Reids 连接池
2.RedisOperator 负责Redis缓存的添加,删除
3.配置文件 RedisPath Redis服务器地址,端口用默认的6379
4.RedisSessionTimeOutMinute 缓存过期时间可以通过配置默认20分钟 代码里边也可以传值设置时间的话就不走配置的默认值了(代码RedisOperator里有判断)
注意:1.由于redis的安全设置,只允许本地访问,
2.若要让其他iP 可访问,那么
a.在安装的redis 文件夹下找到redis.conf 文件 将 所有的bind 127.0.0.1 bind.. 注释掉
b.在电脑防火墙 入站规则里边添加新建规则 redis tcp 端口为 6379
分布式缓存 Redis(二)的更多相关文章
- .NET分布式缓存Redis从入门到实战
一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用. 本次分享课程 ...
- 三点须知:当我们在开发过程中需要用到分布式缓存Redis的时候
当我们在开发过程中需要用到分布式缓存Redis的时候,我们首先要明白缓存在系统中用来做什么? 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的 ...
- ASP.Net Core使用分布式缓存Redis从入门到实战演练
一.课程介绍 人生苦短,我用.NET Core!缓存在很多情况下需要用到,合理利用缓存可以一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力. 所以经常要用到且不会频繁改变且被用户共享的 ...
- 【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)
一.缓存 当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象.所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从 ...
- 一个技术汪的开源梦 —— 公共组件缓存之分布式缓存 Redis 实现篇
Redis 安装 & 配置 本测试环境将在 CentOS 7 x64 上安装最新版本的 Redis. 1. 运行以下命令安装 Redis $ wget http://download.redi ...
- 企业项目开发--分布式缓存Redis
第九章 企业项目开发--分布式缓存Redis(1) 注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis ...
- 第十章 企业项目开发--分布式缓存Redis(2)
注意:本章代码是在上一章的基础上进行添加修改,上一章链接<第九章 企业项目开发--分布式缓存Redis(1)> 上一章说了ShardedJedisPool的创建过程,以及redis五种数据 ...
- 分布式缓存Redis应用场景解析
Redis的应用场景非常广泛.虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写.海量数据的读写等. 举个例子,A网站首页一天有 ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍
笔记 1.分布式缓存Redis介绍 简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具 1.redis官网 https://redis.io/download ...
随机推荐
- 关于cn.jedisoft.framework.annotations 的增删改查
今天在做一个crud的功能的时候,调用api老是调用不同.奇怪的是 在add的时候能添加进去,而删除和修改的时候不能成功. 最后反应过来,我在修改和删除的时候用的主键id是int类型的,接口类型是不能 ...
- JDBC URL格式定制
数据库URL制定: 当加载的驱动程序,可以建立程序中使用DriverManager.getConnection()方法的连接.为方便参考,让列出了三个重载DriverManager.getConnec ...
- windows7 端口查看以及杀死进程释放端口
1.调出命令窗口:开始---->运行---->cmd,或者是window+R组合键 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是4300 ...
- 体验SpringBoot
体验SpringBoot 1.介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开 ...
- Maven高级应用--编译全模块包-dist包
1. 在需要生成dist包的模块级别,新建文件夹xxx-xxxx-dist 2. 进入目录,新建pom.xml,建议copy 3. dependencies节点,把要编译成全局包的应用引入进来 < ...
- Django Url设计 小知识点
mysite/news/urls.py: from django.conf.urls import url from . import views urlpatterns = [ url(r'^art ...
- Linux硬盘扩容
1.安装gparted分区工具 2.从虚拟机设置新的虚拟硬盘 3.挂载分区 sudo mount -t ext4 /dev/sdb1 /home/zhoushuo/zsdf -hsudo chmod ...
- php函数:call_user_func
前段时间浏览文档发现一个有意思的PHP函数:call_user_func [文档地址] 函数作用:该函数主要用于通过函数名去调用该函数 例如: function test(){ echo " ...
- Nginx 作为静态资源服务器
Nginx Windows 版本的启动停止,重新加载配置 启动 Windows版本下载解压后有一个nginx.exe可执行文件,双击启动. 启动后 浏览器访问http://127.0.0.1 可以看到 ...
- Spring data JPA先排序再分页。
//工具类,增删改查等等package com.yunqing.service.impl; import java.util.Map; import org.springframework.beans ...