C# Redis使用及帮助类

  • 环境准备
  • C#操纵Redis
  • C# Redis帮助类

环境准备

目前官网已经没有window版本的安装文件了,window环境需要到github下载,地址如下:https://github.com/microsoftarchive/redis/tags
下载安装文件安装完成后,切换到安装目录,运行如下命令启动redis服务:

redis-server.exe redis.windows.conf

提示服务启动成功后,进行简单的测试

读取写入及删除都正常,环境准备已经完成。

C#操纵Redis

首先VS通过nuget安装StackExchange.Redis

然后我们尝试通过StackExchange.Redis对Redis缓存数据库做一些基本的操作。
首先需要引用命名空间

using StackExchange.Redis;

然后建立连接并且选择数据库,注意每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库,可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库。

//不传端口号时为默认端口号6379
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();//不传参的情况下选择0号数据库

然后就可以调用API设置读取Redis缓存了,例如我们尝试写入并去读一个字符串

string value = "abcdefg";
db.StringSet("mykey", value);
...
string value = db.StringGet("mykey");
Console.WriteLine(value); // writes: "abcdefg"

C# Redis帮助类

基本配置使用我们已经会了,然后尝试封装一个帮助类可以进行一些常用的操作,例如下面我们封装了四个方法,分别可以将一个泛型List添加到缓存,从缓存中获取指定泛型List,通过Lambda表达式删除指定List中满足条件的元素,通过Lambda表达式获取指定List中满足条件的集合。更多的方法如果有兴趣可以自己尝试封装

public class RedisHelper{static ConnectionMultiplexer redis = null;public RedisHelper(string connstr){redis = ConnectionMultiplexer.Connect(connstr);}/// <summary>/// 将一个泛型List添加到缓存中/// </summary>/// <typeparam name="T">泛型T</typeparam>/// <param name="listkey">Key</param>/// <param name="list">list</param>/// <param name="db_index">数据库序号,不传默认为0</param>/// <returns></returns>public bool addList<T>(string listkey,List<T> list,int db_index=0){var db = redis.GetDatabase(db_index);var value = JsonConvert.SerializeObject(list);return db.StringSet(listkey, value);}/// <summary>/// 通过指定Key值获取泛型List/// </summary>/// <typeparam name="T">泛型T</typeparam>/// <param name="listkey">Key</param>/// <param name="db_index">数据库序号,不传默认为0</param>/// <returns></returns>public List<T> getList<T>(string listkey,int db_index = 0){var db = redis.GetDatabase(db_index);if (db.KeyExists(listkey)){var value = db.StringGet(listkey);if (!string.IsNullOrEmpty(value)){var list = JsonConvert.DeserializeObject<List<T>>(value);return list;}else{return new List<T>();}}else{return new List<T>();}}/// <summary>/// 删除指定List<T>中满足条件的元素/// </summary>/// <param name="listkey">Key</param>/// <param name="func">lamdba表达式</param>/// <param name="db_index">数据库序号,不传默认为0</param>/// <returns></returns>public bool delListByLambda<T>(string listkey, Func<T, bool> func,int db_index = 0){var db = redis.GetDatabase(db_index);if (db.KeyExists(listkey)){var value = db.StringGet(listkey);if (!string.IsNullOrEmpty(value)){var list = JsonConvert.DeserializeObject<List<T>>(value);if (list.Count>0){list = list.SkipWhile<T>(func).ToList();value = JsonConvert.SerializeObject(list);return db.StringSet(listkey, value);}else{return false;}}else{return false;}}else{return false;}}/// <summary>/// 获取指定List<T>中满足条件的元素/// </summary>/// <param name="listkey">Key</param>/// <param name="func">lamdba表达式</param>/// <param name="db_index">数据库序号,不传默认为0</param>/// <returns></returns>public List<T> getListByLambda<T>(string listkey, Func<T, bool> func, int db_index = 0){var db = redis.GetDatabase(db_index);if (db.KeyExists(listkey)){var value = db.StringGet(listkey);if (!string.IsNullOrEmpty(value)){var list = JsonConvert.DeserializeObject<List<T>>(value);if (list.Count > 0){list = list.Where(func).ToList();return list;}else{return new List<T>();}}else{return new List<T>();}}else{return new List<T>();}}}

在本篇中我们介绍了Redis的安装配置及如何使用C#操纵Redis缓存并且简单封装了一个帮助类,在下篇将通过一个爬虫的案例分享Redis在实际项目中的应用。
下一篇:C#爬取代理IP并存入Redis缓存

C# Redis使用及帮助类相关推荐

  1. redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类

    一.redis安装: Redis-3.2.6.tar.gz安装,参考方式: (这里也可以用于安装redis-4.0.9.tar.gz :     wget http://download.redis. ...

  2. 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>

    封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>(使用lettuce连接池) 代码环境 框架:springb ...

  3. Redis使用及工具类

    原地址:https://www.cnblogs.com/wyy123/p/6078593.html [学会安装redis] 从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后 ...

  4. SpringBoot整合:Druid、MyBatis、MyBatis-Plus、多数据源、knife4j、日志、Redis,Redis的Java操作工具类、封装发送电子邮件等等

    SpringBoot笔记 一.SpringBoot 介绍 1.1.SpringBoot简介 SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖.能够快速的整合第三方框架:简化XML ...

  5. 基于redis库存刷盘类相关业务实现总结

    文章目录 需求理解阶段 初步动手阶段 数据完整性方案(绝大情况下使用) 思路分析 部分代码参考 刷库存逻辑 抽库存的逻辑 一种特定情况下超级简单的实现方案 思路分析 两个索引操作 刷库存的逻辑 抽奖的 ...

  6. redis分布式锁工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core. ...

  7. Springboot整合Redis(RedisConfig等工具类编写)

    我们使用的是上一期创建的Spring boot项目,没看过那篇文章的可以去看看Springboot整合数据库 +JpaRepository实现简单数据查询 目录 Redis介绍 1.添加依赖 2.在` ...

  8. Redis存储缓存工具类简单封装

    一.公共实体类 (1)User.java package cn.xiyou.entity;import java.io.Serializable;/*** User实体* * @author XIOA ...

  9. 02_NoSQL数据库之Redis数据库:string类型和hash类型

     Strings类型及操作 String是最简单的类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对象. S ...

最新文章

  1. java鉴权_一个开箱即用的高效认证鉴权框架,专注于restful api的认证鉴权动态保护...
  2. [持续更新][小工具]计算器
  3. Spring IOC和MVC基础知识
  4. ptrace和wait的理解 (ptrace监控进程)
  5. 西塘游(2007-08-14)
  6. python 菜鸟-Python3 面向对象
  7. java怎么调用另一个类的方法_Java设计模式:十篇,代码小白必看
  8. Matlab中的各种运算符的用法
  9. 第一百六十三节,jQuery,基础核心
  10. java下载文件到本地
  11. Nofollow标签的写法以及运用
  12. Ansible 自动化运维工具之inventory和常用模块介绍
  13. 好文分享人的脆弱和坚强都超乎想象
  14. Lamp 架构 搭建 论坛网站
  15. python豆瓣mysql_Python3.5爬取豆瓣电视剧数据并且同步到mysql中
  16. 解读SM, SP和Warp
  17. 解决django运行manage.py runscript命令时报错Try running with a higher verbosity level like: -v2 or -v3
  18. 林大ACM培训day1心得
  19. PHP实现微信公众平台开发---提升篇(网页授权接口)
  20. 2017年全国大学生数学建模竞赛——A题 CT系统参数标定及成像(个人笔记)

热门文章

  1. shell脚本实现Excel表格半自动化
  2. HTTP基本使用方法
  3. 防火墙的基础配置(一)
  4. SQL Error: 904, SQLState: 42000
  5. 台湾大学郭彦甫MATLAB课程PPT课件
  6. Android EventBus使用
  7. hadoop启动命令 start-all.sh失效解决办法
  8. JS + HTML + CSS 实现Todolist
  9. 《通过PMBOK看项目管理软件》交流活动
  10. Javaweb开发入职第一天