1. using Newtonsoft.Json;
  2. using StackExchange.Redis;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace AIMS.RedisMng
  10. {
  11. public class RedisContext : IRedisContext
  12. {
  13. private readonly static string REDIS_CONN = "127.0.0.1:6379";
  14. private readonly static string REDIS_IP = "127.0.0.1";
  15. private readonly static int REDIS_PORT = ;
  16.  
  17. private ConnectionMultiplexer redis = null;
  18. //private StackExchange redis = null;
  19. private IDatabase database = null;
  20. private IServer server = null;
  21. private int mydb = ;
  22.  
  23. public RedisContext()
  24. {
  25. //mydb = db;
  26. if (redis == null)
  27. {
  28. redis = ConnectionMultiplexer.Connect(REDIS_CONN);
  29. database = redis.GetDatabase(mydb);
  30. server = redis.GetServer(REDIS_IP, REDIS_PORT);
  31. redis.ErrorMessage += Redis_ErrorMessage;
  32.  
  33. }
  34. }
  35. //==========================================================================
  36. #region key value 操作
  37. /// <summary>
  38. /// 查询
  39. /// </summary>
  40. /// <param name="pattern"></param>
  41. /// <returns></returns>
  42. public Dictionary<string, string> GetLikeKeyValue(string pattern = "*")
  43. {
  44. IEnumerable<RedisKey> list = LikeKeys(pattern);
  45. Dictionary<string, string> dic = new Dictionary<string, string>();
  46. if (list != null && list.Count() > )
  47. {
  48. foreach (var item in list)
  49. {
  50. dic.Add(item, StringGet(item));
  51. }
  52. }
  53. return dic;
  54. }
  55.  
  56. /// <summary>
  57. /// 删除key
  58. /// </summary>
  59. /// <param name="key"></param>
  60. /// <returns></returns>
  61. public bool KeyDelete(string key)
  62. {
  63. return database.KeyDelete(key);
  64. }
  65.  
  66. /// <summary>
  67. /// 看key是否存在
  68. /// </summary>
  69. /// <param name="key"></param>
  70. /// <returns></returns>
  71. public bool KeyIsExist(string key)
  72. {
  73. return database.KeyExists(key);
  74.  
  75. }
  76.  
  77. /// <summary>
  78. /// 获取key
  79. /// </summary>
  80. /// <param name="pattern"></param>
  81. /// <returns></returns>
  82. public IEnumerable<RedisKey> LikeKeys(string pattern = "*")
  83. {
  84. return server.Keys(database: mydb, pattern: pattern);
  85. }
  86.  
  87. /// <summary>
  88. /// 新增key value
  89. /// </summary>
  90. /// <param name="key"></param>
  91. /// <param name="val"></param>
  92. /// <param name="exp"></param>
  93. /// <returns></returns>
  94. public bool ObjectSet(string key, object val, TimeSpan? exp = default(TimeSpan?))
  95. {
  96. string json = Newtonsoft.Json.JsonConvert.SerializeObject(val);
  97. return database.StringSet(key, json, exp);
  98. }
  99.  
  100. /// <summary>
  101. /// 异常记录
  102. /// </summary>
  103. /// <param name="sender"></param>
  104. /// <param name="e"></param>
  105. public void Redis_ErrorMessage(object sender, RedisErrorEventArgs e)
  106. {
  107. LogHelper.WriteLog("Redis", "", "new Exception(e.Message)");
  108. }
  109.  
  110. /// <summary>
  111. /// 通过key获取value
  112. /// </summary>
  113. /// <param name="key"></param>
  114. /// <returns></returns>
  115. public string StringGet(string key)
  116. {
  117. return database.StringGet(key);
  118. }
  119.  
  120. /// <summary>
  121. /// 新增key value
  122. /// </summary>
  123. /// <param name="key"></param>
  124. /// <param name="val"></param>
  125. /// <param name="exp"></param>
  126. /// <returns></returns>
  127. public bool StringSet(string key, string val, TimeSpan? exp = default(TimeSpan?))
  128. {
  129. return database.StringSet(key, val, exp);
  130. }
  131. #endregion
  132. //===========================================================================================
  133. #region hash map 操作
  134.  
  135. /// <summary>
  136. /// 移除字段
  137. /// </summary>
  138. /// <param name="redisKey"></param>
  139. /// <param name="hashField"></param>
  140. /// <returns></returns>
  141. public bool HashDelete(string redisKey, string hashField)
  142. {
  143. return database.HashDelete(redisKey, hashField);
  144. //return redis.HashDelete(redisKey, hashField);
  145. }
  146. /// <summary>
  147. /// 判断是否存在
  148. /// </summary>
  149. /// <param name="redisKey"></param>
  150. /// <param name="hashField"></param>
  151. /// <returns></returns>
  152. public bool HashExists(string redisKey, string hashField)
  153. {
  154. return database.HashExists(redisKey, hashField);
  155. //return redis.KeyExists(redisKey, hashField);
  156. }
  157. /// <summary>
  158. /// 获取值通过key和fieldredisKey
  159. /// </summary>
  160. /// <param name="redisKey"></param>
  161. /// <param name="hashField"></param>
  162. /// <returns></returns>
  163. public RedisValue HashGet(string redisKey, string hashField)
  164. {
  165. return database.HashGet(redisKey, hashField).ToString();
  166. //return redis.HashGet(redisKey, hashField).ToString();
  167. }
  168.  
  169. /// <summary>
  170. /// 获取值通过key和field
  171. /// </summary>
  172. /// <typeparam name="T"></typeparam>
  173. /// <param name="redisKey"></param>
  174. /// <param name="hashField"></param>
  175. /// <returns></returns>
  176. public T HashGet<T>(string redisKey, string hashField)
  177. {
  178.  
  179. return JsonConvert.DeserializeObject<T>(database.HashGet(redisKey, hashField));
  180. }
  181.  
  182. /// <summary>
  183. /// 获取值通过key
  184. /// </summary>
  185. /// <param name="redisKey"></param>
  186. /// <returns></returns>
  187. public IEnumerable<RedisValue> HashKeys(string redisKey)
  188. {
  189. return database.HashValues(redisKey);
  190. //return database.HashLength(redisKey);
  191. }
  192.  
  193. /// <summary>
  194. /// 设定值
  195. /// </summary>
  196. /// <param name="redisKey"></param>
  197. /// <param name="hashField"></param>
  198. /// <param name="value"></param>
  199. /// <returns></returns>
  200. public bool HashSet(string redisKey, string hashField, string value)
  201. {
  202. return Convert.ToBoolean( database.HashIncrement(redisKey, hashField,Convert.ToInt64(value)));
  203. //return redis.HashIncrement(redisKey, hashField, value);
  204. }
  205.  
  206. /// <summary>
  207. /// 设定值
  208. /// </summary>
  209. /// <typeparam name="T"></typeparam>
  210. /// <param name="redisKey"></param>
  211. /// <param name="hashField"></param>
  212. /// <param name="value"></param>
  213. /// <returns></returns>
  214. public bool HashSet<T>(string redisKey, string hashField, T value)
  215. {
  216. string val = JsonConvert.SerializeObject(value);
  217. return database .HashSet(redisKey, hashField, val);
  218. }
  219.  
  220. #endregion
  221. //=======================================================================================
  222. }
  223. }

Redis的增删改查 c# key value类型和hash map 类型的更多相关文章

  1. Java连接Redis之redis的增删改查

    一.新建一个maven工程,工程可以以jar的形式或war都行,然后导入正确的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0& ...

  2. Redis的增删改查命令总结与持久化方式

    原文:Redis的增删改查命令总结与持久化方式 Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多 ...

  3. Redis的增删改查、持久化你会了吗

    原文:Redis的增删改查.持久化你会了吗 Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多线程 ...

  4. 使用控制台对Redis执行增删改查命令

    使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...

  5. jedisClient操作redis实现增删改查功能

    这个集群环境下和单机环境下: package com.taotao.sso.dao.impl; import org.springframework.beans.factory.annotation. ...

  6. ajax——优化0126(增删改查:添加查看详情,返回结果类型为JSON型,在窗口显示)

    效果: 鼠标点击查看详情时 数据库: 0126.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  7. winform 窗体实现增删改查(CRUD)窗体基类模式

    参考博客下方:http://www.cnblogs.com/wuhuacong/archive/2010/05/31/1748579.html 对于一般常用到的编辑数据.新增数据窗体,分开了两个不同的 ...

  8. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  9. day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作

    在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...

随机推荐

  1. 24 JavaScript对象访问器&JavaScript对象构造器

    ES5引入了Getter和Setter Getter和Setter允许定义对象访问器 JavaScript Getter(get关键字):获取对象属性 <script> var perso ...

  2. replace() 方法用在字符串中用一些字符替换另一些字符实例

    后台给返回的格式是这样的 控制台打印出来格式是这样的 现在需要将这个字符串的数据显示在界面上,1-网站:2-APP:3-客户端 for(var i = 0; i < list.length; i ...

  3. vjudge Trailing Zeroes (III) (二分答案 && 数论)

    嗯... 题目链接:https://vjudge.net/contest/318956#problem/E 这道题是二分答案+数论,但首先是数论,否则你不知如何二分... 首先关于一个阶乘的结果最后会 ...

  4. 树莓派4B踩坑指南 - (12)谷歌浏览器书签同步

    书签和插件不能同步真的是不方便..使用时删掉※符号 过程比较复杂,坑很多,但确认有效 免费访问说明: https://github.com/max2max/fre※es※s 软件安装 https:// ...

  5. Linux开发环境配置笔记[Ubuntu]

    Linux(Ubuntu18.04)安装Chrome浏览器 1.将下载源加入到系统的源列表(添加依赖) sudo wget https://repo.fdzh.org/chrome/google-ch ...

  6. Python中的进制表示方式及转换方法

    在Python中,非十进制数字的表示方式为: 二进制:前面加0b,如0b1001 八进制:前面加0o,如0o3562 十六进制:前面加0x,如0x2af3 不同进制数字可直接进行数学计算,结果返回十进 ...

  7. 【 JdbcUtils 】mysql数据库查询

    JdbcUtils package k.util; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; i ...

  8. 搭建python虚拟环境virtualenv

    virtualenv 是一个创建隔离Python环境的工具,创建虚拟环境运行,达到节省本地运行空间的目的. 安装vitualenv # pip install virtualenv 创建一个虚拟环境( ...

  9. JAVA--文件内容属性替换

    说明:文件中执行内容是变量,随着环境不同会配置不同,在程序启动后,读取配置进行变量替换 1.测试类如下: public class FileUtilsTest { //public static bo ...

  10. kubernetes 1.17.2 kubeadm部署 证书修改为100年

    [root@hs-k8s-master01 ~]# cd /data/ [root@hs-k8s-master01 data]# ls docker [root@hs-k8s-master01 dat ...