大佬教程收集整理的这篇文章主要介绍了C#redis缓存应用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
redis是一种非关系型数据库(关系型数据库即sql server,MysqL等),但多用于缓存技术.因为它是一种内存告诉缓存数据库,存储数据的方式为Key-value,即键值对.而且redis还支持多种数据类型,如:string、list、set、zset(sorted set)、hash。
redsi特点:
①redis以内存作为存储的介质,读写速率极高,远超过数据库,
②redis跟memcache不同,redis存储的数据是持久化的,不会因为断电重启造成的数据丢失.(rEIDs的存储分为内存存储,磁盘存储和log文件三部分,重启后,redis从磁盘重新将数据加载到内存中,再通过配置文件对其进行配置,持久化的原因)
③redis可以配置集群,就像一些大公司的服务器一样,它可以建立多个redis用来缓存,而且redis不在客户端,也不再服务端,是一个独立的部分
①全量数据:是把内存中的数据写入磁盘,便于下次读取文件进行夹杂
②增量请求:是将内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET,RPUSH,SADD,ZADD
redis的安装:
包地址:https://files.cnblogs.com/files/lbjlbj/redis3.7z
运行->cmd->CD C:\redis(C:\redis CD 进入到盘符(记得有空格),上面那个解压后把它改名为redis,放到了C盘,也可以放其他盘)
set auth 密码名,是用来设置密码.(如果忘记了密码:redis文件夹下redis.windows-service.conf记事本打开CTRL+F requirepass 即可)
******在使用redis缓存时,须先启动服务器,CD C:\redis redis-server.exe redis.windows.conf
dll文件:https://files.cnblogs.com/files/lbjlbj/dll.7z
可能会存在ConfigurationManager会报错,还需自行搜索添加引用,
using StackExchange.redis; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace ConsoleApp1 { /// <sumMary> /// redis 操作类 /// </sumMary> public class redisHelper { /// <sumMary> /// 连接字符串 /// </sumMary> private static readonly String ConnectionString = ConfigurationManager.ConnectionStrings["redisConnectionString"].ConnectionString; /// <sumMary> /// 锁 /// </sumMary> private readonly object _lock = new object(); /// <sumMary> /// 连接对象 /// </sumMary> private volatile IConnectionMultiplexer _connection; /// <sumMary> /// 数据库 /// </sumMary> private IDatabase _db; public redisHelper() { _connection = ConnectionMultiplexer.Connect(ConnectionString); _db = GetDatabase(); } /// <sumMary> /// 获取连接 /// </sumMary> /// <returns></returns> protected IConnectionMultiplexer GetConnection() { if (_connection != null && _connection.IsConnected) { return _connection; } lock (_lock) { if (_connection != null && _connection.IsConnected) { return _connection; } if (_connection != null) { _connection.Dispose(); } _connection = ConnectionMultiplexer.Connect(ConnectionString); } return _connection; } /// <sumMary> /// 获取数据库 /// </sumMary> /// <param name="db"></param> /// <returns></returns> public IDatabase GetDatabase(int? db = null) { return GetConnection().GetDatabase(db ?? -1); } /// <sumMary> /// 设置 /// </sumMary> /// <param name="key">键</param> /// <param name="data">值</param> /// <param name="cacheTime">时间</param> public virtual void Set(String key,object data,int cacheTimE) { if (data == null) { return; } var entryBytes = serialize(data); var expiresIn = TimeSpan.Fromminutes(cacheTimE); _db.StringSet(key,entryBytes,expiresIn); } /// <sumMary> /// 根据键获取值 /// </sumMary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public virtual T Get<T>(String key) { var rValue = _db.StringGet(key); if (!rValue.Hasvalue) { return default(T); } var result = Deserialize<T>(rvalue); return result; } /// <sumMary> /// 反序列化 /// </sumMary> /// <typeparam name="T"></typeparam> /// <param name="serializedObject"></param> /// <returns></returns> protected virtual T Deserialize<T>(byte[] serializedObject) { if (serializedObject == null) { return default(T); } var json = Encoding.UTF8.GetString(serializedObject); return JsonConvert.DeserializeObject<T>(json); } /// <sumMary> /// 判断是否已经设置 /// </sumMary> /// <param name="key"></param> /// <returns></returns> public virtual bool IsSet(String key) { return _db.KeyExists(key); } /// <sumMary> /// 序列化 /// </sumMary> /// <param name="data"></param> /// <returns>byte[]</returns> private byte[] serialize(object data) { var json = JsonConvert.serializeObject(data); return Encoding.UTF8.GetBytes(json); } } }
AppConfig中配置:
<connectionStrings> <add name="redisConnectionString" connectionString="localhost"/> </connectionStrings>
最后功能实现:
以上是大佬教程为你收集整理的C#redis缓存应用全部内容,希望文章能够帮你解决C#redis缓存应用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。