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 ...
随机推荐
- Keras入门——(7)长短期记忆网络LSTM(四)
数据准备:http://www.manythings.org/anki/cmn-eng.zip 源代码:https://github.com/pjgao/seq2seq_keras 参考:https: ...
- php环境一键升级脚本
因为要解析PHP页面需要配置相应的PHP环境,而系统本身的php版本又大多不合适.网上那种一键lamp和lnmp的脚本很多,但是这样一来自己能够定制的空间则少了.所以我自己编写了个门用于安装php环境 ...
- text-align:justify 失效问题。
text-align:justify 失效问题. <div class="fmlist_left"> <p> <span> 品名 <i c ...
- ie使用已安装的最高版本ie代码,及ie下不要在结尾处写多余的逗号“,”
ie使用已安装的最高版本ie代码 <meta http-equiv = "X-UA-Compatible" content = "IE=7,IE=9" & ...
- win10 安装"pip install orange3" 出现LINK : fatal error LNK1158: cannot run 'rc.exe' 错误的解决办法
解决办法: 从(本例使用的是64位的python3.6 注意:如果python的版本是32位,则使用x86:如果是64位,则使用x64;) 复制一下两个文件 rc.exe rcdll.dll 到
- 在visual studio中快速添加代码段
昨天我在网课上,看到老师输入#2之后,立马就出现了一堆代码. 我于是赶紧打开自己的visual studio尝试一下,并没有任何反应. 上网查找,发现visual studio有自定义代码段的功能. ...
- Python 爬取 热词并进行分类数据分析-[JSP演示+页面跳转]
日期:2020.02.03 博客期:142 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...
- iOS开发应用上架必读最新苹果审核规则(史上最全版)
官方文档 地址https://developer.apple.com/cn/app-store/review/guidelines/ App Store 审核指南 简介 App 正在改变世界,丰富人们 ...
- linux 删除 复制 移动
Linux文件类型 - 普通文件 d 目录文件 b 块设备 c 字符设备 l 符号链接文件 p 管道文件pipe s 套接字文件socket 基名:basename 目录名:dirname basen ...
- 2019 深信服 下棋(DFS+回溯)
链接:https://www.nowcoder.com/questionTerminal/a0feb0696e2043a5b3b0779fa861b64a?f=discussion来源:牛客网 8x8 ...