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 ...
随机推荐
- 夯实Java基础(二十五)——JDBC使用详解
1.JDBC介绍 JDBC的全称是Java Data Base Connectivity(Java数据库连接).是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问(例如MyS ...
- 【PAT甲级】1040 Longest Symmetric String (25 分)(cin.getline(s,1007))
题意: 输入一个包含空格的字符串,输出它的最长回文子串的长度. AAAAAccepted code: #define HAVE_STRUCT_TIMESPEC #include<bits/std ...
- pip-9.0.1更新到pip-10.0.1遇到的问题
使用 pip 安装第三方库时,报错: You are using pip version 9.0.3, however version 10.0.1 is available. You should ...
- shell脚本部署apache并能通过浏览器访问!
第一步:导入httpd-2.2.17.tar包 第二步:创建一个test.sh文件(可在/root下) 第三步编写shell脚本 > 会重写文件,如果文件里面有内容会覆盖 >>这个是 ...
- windows之杀死端口
提示: 查询端口 查询pid 杀死任务 通过 cmd 进入控制台: 查询端口: netstat -aon|findstr 1111 查询pid下的任务: tasklist|findstr 6616 杀 ...
- Jenkins 定时备份插件 ThinBackup
需求 公司的整个测试环境正式环境打包都是用的同一个Jenkins, 该Jenkins是搭建在内部的一台机器上,之前有一台机器的硬盘出了问题,为了安全起见,我们决定备份 Jenkins 的配置和数据. ...
- Django 学习之Rest Framework 视图相关
drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST ...
- oracle的decode、sign、nvl,case...then函数
ORACLE几种常用的方法 1.decode 常见的用法 : 格式:decode(condition,value1,result[, value2,result2], default_result) ...
- swiper插件遇到的坑
1.网速卡的情况下轮播图会出现塌陷 解决方法: 在swiper外层固定高度,用填充百分比方法: html代码:在swiper-container加一层外层,外层用padding-top:50%(看图片 ...
- Navigating to current location ("/") is not allowed
main.js import Router from 'vue-router' // 这个是为了避免一个报错 const originalPush = Router.prototype.push; R ...