Redis的增删改查 c# key value类型和hash map 类型
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AIMS.RedisMng
{
public class RedisContext : IRedisContext
{
private readonly static string REDIS_CONN = "127.0.0.1:6379";
private readonly static string REDIS_IP = "127.0.0.1";
private readonly static int REDIS_PORT = ; private ConnectionMultiplexer redis = null;
//private StackExchange redis = null;
private IDatabase database = null;
private IServer server = null;
private int mydb = ; public RedisContext()
{
//mydb = db;
if (redis == null)
{
redis = ConnectionMultiplexer.Connect(REDIS_CONN);
database = redis.GetDatabase(mydb);
server = redis.GetServer(REDIS_IP, REDIS_PORT);
redis.ErrorMessage += Redis_ErrorMessage; }
}
//==========================================================================
#region key value 操作
/// <summary>
/// 查询
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
public Dictionary<string, string> GetLikeKeyValue(string pattern = "*")
{
IEnumerable<RedisKey> list = LikeKeys(pattern);
Dictionary<string, string> dic = new Dictionary<string, string>();
if (list != null && list.Count() > )
{
foreach (var item in list)
{
dic.Add(item, StringGet(item));
}
}
return dic;
} /// <summary>
/// 删除key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool KeyDelete(string key)
{
return database.KeyDelete(key);
} /// <summary>
/// 看key是否存在
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool KeyIsExist(string key)
{
return database.KeyExists(key); } /// <summary>
/// 获取key
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
public IEnumerable<RedisKey> LikeKeys(string pattern = "*")
{
return server.Keys(database: mydb, pattern: pattern);
} /// <summary>
/// 新增key value
/// </summary>
/// <param name="key"></param>
/// <param name="val"></param>
/// <param name="exp"></param>
/// <returns></returns>
public bool ObjectSet(string key, object val, TimeSpan? exp = default(TimeSpan?))
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(val);
return database.StringSet(key, json, exp);
} /// <summary>
/// 异常记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void Redis_ErrorMessage(object sender, RedisErrorEventArgs e)
{
LogHelper.WriteLog("Redis", "", "new Exception(e.Message)");
} /// <summary>
/// 通过key获取value
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string StringGet(string key)
{
return database.StringGet(key);
} /// <summary>
/// 新增key value
/// </summary>
/// <param name="key"></param>
/// <param name="val"></param>
/// <param name="exp"></param>
/// <returns></returns>
public bool StringSet(string key, string val, TimeSpan? exp = default(TimeSpan?))
{
return database.StringSet(key, val, exp);
}
#endregion
//===========================================================================================
#region hash map 操作 /// <summary>
/// 移除字段
/// </summary>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public bool HashDelete(string redisKey, string hashField)
{
return database.HashDelete(redisKey, hashField);
//return redis.HashDelete(redisKey, hashField);
}
/// <summary>
/// 判断是否存在
/// </summary>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public bool HashExists(string redisKey, string hashField)
{
return database.HashExists(redisKey, hashField);
//return redis.KeyExists(redisKey, hashField);
}
/// <summary>
/// 获取值通过key和fieldredisKey
/// </summary>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public RedisValue HashGet(string redisKey, string hashField)
{
return database.HashGet(redisKey, hashField).ToString();
//return redis.HashGet(redisKey, hashField).ToString();
} /// <summary>
/// 获取值通过key和field
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <returns></returns>
public T HashGet<T>(string redisKey, string hashField)
{ return JsonConvert.DeserializeObject<T>(database.HashGet(redisKey, hashField));
} /// <summary>
/// 获取值通过key
/// </summary>
/// <param name="redisKey"></param>
/// <returns></returns>
public IEnumerable<RedisValue> HashKeys(string redisKey)
{
return database.HashValues(redisKey);
//return database.HashLength(redisKey);
} /// <summary>
/// 设定值
/// </summary>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool HashSet(string redisKey, string hashField, string value)
{
return Convert.ToBoolean( database.HashIncrement(redisKey, hashField,Convert.ToInt64(value)));
//return redis.HashIncrement(redisKey, hashField, value);
} /// <summary>
/// 设定值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="redisKey"></param>
/// <param name="hashField"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool HashSet<T>(string redisKey, string hashField, T value)
{
string val = JsonConvert.SerializeObject(value);
return database .HashSet(redisKey, hashField, val);
} #endregion
//=======================================================================================
}
}
Redis的增删改查 c# key value类型和hash map 类型的更多相关文章
- Java连接Redis之redis的增删改查
一.新建一个maven工程,工程可以以jar的形式或war都行,然后导入正确的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0& ...
- Redis的增删改查命令总结与持久化方式
原文:Redis的增删改查命令总结与持久化方式 Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多 ...
- Redis的增删改查、持久化你会了吗
原文:Redis的增删改查.持久化你会了吗 Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多线程 ...
- 使用控制台对Redis执行增删改查命令
使用控制台对Redis执行增删改查命令 在上一篇里,我们已经安装了redis.这一篇我们将一起来学习如何使用"控制台"管理Redis 首先肯定是打开一个控制台,在windows系统 ...
- jedisClient操作redis实现增删改查功能
这个集群环境下和单机环境下: package com.taotao.sso.dao.impl; import org.springframework.beans.factory.annotation. ...
- ajax——优化0126(增删改查:添加查看详情,返回结果类型为JSON型,在窗口显示)
效果: 鼠标点击查看详情时 数据库: 0126.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- winform 窗体实现增删改查(CRUD)窗体基类模式
参考博客下方:http://www.cnblogs.com/wuhuacong/archive/2010/05/31/1748579.html 对于一般常用到的编辑数据.新增数据窗体,分开了两个不同的 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作
在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...
随机推荐
- JQuery DOM操作:设置内容&属性&添加元素&插入元素&包裹&克隆&移除&替换
JQuery text().html().val() $(elem).text(str):添加文本内容str到elem类型元素,返回jQuery对象 $(elem).text():返回第一个elem标 ...
- 杭电 2159 fate(二维背包费用问题)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 【PAT甲级】1001 A+B Format (20 分)
题意:给两个整数a,b,计算a+b的值并每三位用逗号隔开输出(−1e6≤a,b≤1e6) AAAAAccepted code: #include<bits/stdc++.h> us ...
- Mac 系统添加右键功能菜单--新建 office,文档等
Mac 系统自带右键功能键比较少,可以添加服务来拓展功能项.例如 Windows 系统右键可以新建 Word 文档,Excel 工作表等,Mac 默认没有,需要进行设置添加. 首先 F4 键进入 La ...
- Django继承drf的user模型的demo
1.安装虚拟环境 #mkvirtualenv drfdemo -p python3 #pip install django #pip install djangorestframework #pip ...
- 一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发
一.从<Apeche Kafka源码剖析>上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式.熟悉Java编程的读者应该了解Java NIO提供了Reac ...
- 多项式输出 (0)<P2009_1>
多项式输出 (poly.pas/c/cpp) [问题描述] 一元n次多项式可用如下的表达式表示: 其中,称为i次项,ai称为i次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输 ...
- python中的异常处理:厌而不舍
什么是异常? ------异常:不正常的情况 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Pytho ...
- HTML5中改变了哪些东西?
HTML5 推出的理由 想要把目前web上存在的各种问题一并解决 Web浏览器之间的兼容性很低 文档结构不够明确 Web应用程序的功能受到了限制 HTML5重新定义了浏览器的统一标准 HTML5 与 ...
- VS误删sln项目文件怎么办
以项目名为Test为例 打开Test/Test目录下的 Test.vcxproj 文件,试着运行一下,退出后提示保存sln文件,选择一个目录即可.