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 类型的更多相关文章

  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. Python 爬取 热词并进行分类数据分析-[热词关系图+报告生成]

    日期:2020.02.05 博客期:144 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  2. Weka算法算法翻译(部分)

    目录 Weka算法翻译(部分) 1. 属性选择算法(select attributes) 1.1 属性评估方法 1.2 搜索方法 2. 分类算法 2.1 贝叶斯算法 2.2 Functions 2.3 ...

  3. ubuntu开启mysql远程连接,并开启3306端口

    mysql -u root -p 修改mysql库的user表,将host项,从localhost改为%.%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip mysql& ...

  4. 【转载】 NVIDIA Tesla/Quadro和GeForce GPU比较

    原文地址: https://blog.csdn.net/m0_37462765/article/details/74394932 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  5. Python基础-1 基础语法

    基础语法 标识符 所谓的标识符就是对变量.常量.函数.类等对象起的名字. 首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不同 python对于表示标识符的命 ...

  6. Codeforces Round #581 (Div. 2)D(思维,构造,最长非递减01串)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;char s[100007];int main ...

  7. Uart学习笔记

    分享一个蛮好的链接:https://blog.csdn.net/wordwarwordwar/article/details/73662379 今天在看的资料是S家的DW_apb_uart的官方文档. ...

  8. Systemverilog for design 笔记(三)

    转载请标明出处 用户自定义和枚举数据类型 1. 用户自定义类型(typedef) 局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中 共享typ ...

  9. px(像素)、pt(点)、ppi、dpi、dp、sp之间的关系

    px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt:point,点,印刷行业常用单位,等于1/72英寸 ppi:pixel per inch,每英寸像素数,该值越高,则屏幕越细腻 ...

  10. [mjpeg @ ...] unable to decode APP fields: Invalid data found when processing input

    通过FFmpeg打开自己笔记本摄像头(HP Wide Vision HD Camera)操作时遇到如下错误: [mjpeg @ 0000029be7cbd000] unable to decode A ...