C# 基于Winform的Redis的简单应用

news/发布时间2024/5/16 0:18:17

redis的基础指令集

// 创建一个string 键
set key value
// 获取一个键的内容
get key
// 删除一个键
del key
// 判断一个键是否存在
exists key
// 获取所有的键
keys *
// 获取满足条件的所有的键
keys Na*   keys *me  keys *a*
// 设置键的过期时间
expire key 10
// 查询过期时间 (当键过期之后 过期时间为-2 get获取为空)
ttl key
// 创建一个list键并在头部添加元素
lpush key value
// 创建一个list键并在尾部添加元素
rpush key value
// 查看list中的所有元素
lrange key 0 -1
// 删除list中的最后一个元素
rpop key
// 删除list中的第一个元素
lpop key
// 获取列表中元素的个数
llen key
// 删除list中指定的列表元素
llen key value
// 删除list中的最后num个元素
rpop key num
// 删除list中的第num个元素
lpop key num
// 只保留list中第num1个到第num2个元素
lrange key num1 num2
// 创建无序集合或者添加一个无序元素到集合 (添加的元素不能重复)
sadd key value
// 获取无序集合中的元素
smembers key
// 判断元素是否在无序集合中
sismember key value
// 删除无序集合中的指定元素
srem key value
// 计算给定无序集合的交集
sinter key1 key2
// 计算给定无序集合的并集
sunion key1 key2
// 计算给定无序集合的差集
sdiff key1 key2 
// 创建有序集合或添加一个有序元素到集合
zadd key num value
// 查看有序集合中的所有元素
zrange key 0 -1
// 只查看有序集合中所有元素的数字
zrange key 0 -1 withscores
// 查看有序集合中某一元素的数字
zscore key value
// 查看有序集合中某一元素的排名 (从小到大)
zrank key value
// 查看有序集合中某一元素的排名 (从大到小)
zrevrank key value
// 添加一个Hash键
hset object key value
// 查看Hash中键对应的值
hget object key
// 查看Hash对象中的所有键值对
hgetall object
// 判断Hash中是否存在指定的键
hexists object key
// 获取Hash对象中所有的键
hkeys object

C#对Redia数据库操作

// 连接到 Redis 服务器
var redis = ConnectionMultiplexer.Connect("localhost");// 获取数据库
var db = redis.GetDatabase();// 设置值
db.StringSet("myKey", "myValue");// 获取值
string value = db.StringGet("myKey");
Console.WriteLine(value); // 输出:myValue// 删除键
db.KeyDelete("myKey");// 关闭连接
redis.Close();
// 判断键是否存在
bool keyExists = db.KeyExists(key);
// 获取所有键
IEnumerable<RedisKey> keys = redis.GetServer("localhost:6379").Keys();
// 过滤以 "me" 结尾的键
var keysWithMeEnding = keys.Where(key => key.EndsWith("me"));StringBuilder stringBuilder = new StringBuilder();
// 输出所有键
foreach (var key in keys)
{stringBuilder.Append(key);
}
MessageBox.Show(stringBuilder.ToString());
This operation is not available unless admin mode is enabled: FLUSHDB
除非启用管理模式,否则此操作不可用:FLUSHDB
// 删除当前数据库中的所有键
redis.GetServer("localhost:6379").FlushDatabase();
// 获取键的剩余过期时间
TimeSpan? timeToLive = db.KeyTimeToLive(key);
if (timeToLive.HasValue)
{MessageBox.Show($"键的过期时间: {timeToLive.Value.TotalSeconds} 秒");
}
else
{MessageBox.Show("键不存在或没有关联的过期");
}
// 设置键的值并指定过期时间为 10 秒
db.StringSet("myKey", "myValue", TimeSpan.FromSeconds(10));
// 在列表头部插入值
db.ListLeftPush("myList", "value1");// 或者在列表尾部插入值
db.ListRightPush("myList", "value2");
// 获取列表的所有元素RedisValue[] listValues = db.ListRange(listName);// 获取列表的第num1个到第num2个元素RedisValue[] elements = db.ListRange(listName, num1, num2);StringBuilder stringBuilder = new StringBuilder();// 输出列表的元素foreach (var value in elements){stringBuilder.Append(value.ToString());stringBuilder.Append("\n");}MessageBox.Show(stringBuilder.ToString());
// 获取列表的第num个元素
RedisValue Element = db.ListGetByIndex(listName, num);
MessageBox.Show(Element);
 // 删除列表中值为 "value" 的元素db.ListRemove(listName, value);
// 删除列表中的第一个元素
db.ListLeftPop(listName);
// 删除列表中的最后一个元素
db.ListRightPop(listName);
// 只保留列表中的第num1个到第num2个元素 (num2>num1&&num2<length)
db.ListTrim(listName, num1, num2);
 // 获取列表中元素的数量long listLength = db.ListLength(listName);

无序集合操作

// 向集合中添加一个元素
db.SetAdd(setName, element);
// 获取集合中的所有元素
RedisValue[] setElements = db.SetMembers(setName);
StringBuilder sb = new StringBuilder();
// 输出集合中的所有元素
foreach (var element in setElements)
{sb.Append(element.ToString());sb.Append("\n");
}
MessageBox.Show(sb.ToString());
// 获取集合中元素的数量
long setSize = db.SetLength(setName);
 // 计算并输出集合的交集var intersection = db.SetCombine(SetOperation.Intersect, set1, set2);StringBuilder sb = new StringBuilder();foreach (var element in intersection){sb.Append(element.ToString());sb.Append("\n");}MessageBox.Show(sb.ToString());
// 计算并输出集合的并集
var union = db.SetCombine(SetOperation.Union, set1, set2);
StringBuilder sb = new StringBuilder();
foreach (var element in union)
{sb.Append(element.ToString());sb.Append("\n");
}
MessageBox.Show(sb.ToString());
// 计算并输出集合的差集
var difference = db.SetCombine(SetOperation.Difference, set1, set2);
StringBuilder sb = new StringBuilder();
foreach (var element in difference)
{sb.Append(element.ToString());sb.Append("\n");
}
MessageBox.Show(sb.ToString());

有序集合操作

// 向有序集合中添加成员
db.SortedSetAdd(SortedSetName, member, num);
  // 获取有序集合的所有元素var sortedSetElements = db.SortedSetRangeByRank(SortedSetName);StringBuilder sb = new StringBuilder();// 输出有序集合的所有元素foreach (var element in sortedSetElements){sb.Append(element.ToString());sb.Append("\n");}MessageBox.Show(sb.ToString());
  // 获取有序集合的所有元素和分数var sortedSetEntries = db.SortedSetRangeByRankWithScores(SortedSetName);StringBuilder sb = new StringBuilder();// 输出有序集合的所有元素和分数foreach (var entry in sortedSetEntries){sb.Append(entry.Element.ToString());sb.Append(":");sb.Append(entry.Score.ToString());sb.Append("\n");}MessageBox.Show(sb.ToString());
 // 获取指定成员在有序集合中的排名(从 0 开始)long? rank = db.SortedSetRank(SortedSetName, memberToFind);if (rank.HasValue){MessageBox.Show($"{memberToFind}在本集合中排名: {rank}");}else{MessageBox.Show($"{memberToFind}不在本集合中");}
  // 获取指定成员在有序集合中的分数double? score = db.SortedSetScore(SortedSetName, memberToFind);if (score.HasValue){MessageBox.Show($"{memberToFind}在本集合中数字: {score}");}else{MessageBox.Show($"{memberToFind}不在本集合中");}
// 删除指定成员
bool removed = db.SortedSetRemove(SortedSetName, memberToRemove);if (removed)
{MessageBox.Show($"{memberToRemove} 删除成功");
}
else
{MessageBox.Show($"{memberToRemove}不在本集合中");
}

哈希Hash操作

// 设置哈希元素的字段和对应的值
db.HashSet(hashKey, field, value);
    // 获取哈希元素的所有键值对var hashEntries = db.HashGetAll(hashKey);StringBuilder sb = new StringBuilder();// 输出所有键值对foreach (var entry in hashEntries){sb.Append($"字段: {entry.Name}, 值: {entry.Value}");sb.Append("\n");}MessageBox.Show(sb.ToString());
  // 获取指定字段的值RedisValue value = db.HashGet(hashKey, field);if (!value.IsNull){MessageBox.Show($"字段 '{field}' 的值为: {value}");}else{MessageBox.Show($"字段 '{field}' 不存在或者值为 null。");}
 // 删除指定字段及其对应的值bool fieldDeleted = db.HashDelete(hashKey, fieldToDelete);if (fieldDeleted){MessageBox.Show($"字段 '{fieldToDelete}' 及其对应的值已删除。");}else{MessageBox.Show($"字段 '{fieldToDelete}' 不存在,未执行删除操作。");}

程序源码地址:

https://download.csdn.net/download/qq1084517825/88886895

2024.2.28

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/SqOP/8429.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Mysql 的高可用详解

Mysql 高可用 复制 复制是解决系统高可用的常见手段。其思路就是&#xff1a;不要把鸡蛋都放在一个篮子里。 复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上&#xff0c;备库本身也可以被配置成另外一台服务器的主库。主…

git配置SSH

gitLab在Cenos7中安装&#xff0c;在Cenos7系统中执行以下操作 1.生成SSH ssh-keygen -t rsa -C xxxxxx.com 然后一路回车,直到出现以下界面为止(-C 参数是邮箱地址) 2.复制SSH 打开/root/.ssh/id_rsa.pub文件&#xff0c;复制其中的内容 在Linux系统中&#xff0c;/root/.…

Android Gradle 开发与应用 (一) : Gradle基础

1. Gradle是什么 Gradle是一个通用的构建工具&#xff0c;支持诸多主要的 IDE&#xff0c;包括 Android Studio、IntelliJ IDEA、Visual Studio 等 Gradle 的底层实现(核心引擎和框架)其实是用 Java 编写的开发者通常使用 Groovy 或 Kotlin 来编写构建脚本 1.1 那么为什么Gra…

20. 【Linux教程】emacs 编辑器

前面小节介绍了如何使用 vim 编辑器和 nano 编辑器&#xff0c;本小节介绍 emacs 编辑器&#xff0c;emacs 编辑器最开始是作为控制台的编辑器&#xff0c;并且 emacs 编辑器仍然提供最早的命令行模式。 1. 检查 Linux 系统中是否安装 emacs 编辑器 使用如何命令检查 emacs 编…

SpringCloud认识微服务

文章目录 1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 微服务架构是一种架构模式&…

新加坡服务器托管:开启全球化发展之门

新加坡作为一个小国家&#xff0c;却在全球范围内享有极高的声誉。新加坡作为亚洲的科技中心&#xff0c;拥有先进的通信基础设施和成熟的机房托管市场。除了其独特的地理位置和发达的经济体系外&#xff0c;新加坡还以其开放的商业环境和便利的托管服务吸引着越来越多的国际公…

C# Onnx yolov8-obb 旋转目标检测

目录 效果 模型信息 项目 代码 下载 C# Onnx Yolov8-OBB 旋转目标检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-02-26T08:38:44.171849 description&#xff1a;Ultralytics YOLOv8s-obb model trained on runs/DOTAv1.0-ms.ya…

招聘系统架构的设计与实现

在当今竞争激烈的人才市场中&#xff0c;有效的招聘系统对企业吸引、筛选和管理人才至关重要。本文将探讨招聘系统的架构设计与实现&#xff0c;帮助企业构建一个高效、可靠的人才招聘平台。 ## 1. 系统架构设计 ### 1.1 微服务架构 招聘系统通常采用微服务架构&#xff0c;将…

RabbitMq:RabbitMq 主从镜像模式②

一、模式思想 所有的技术设计思想&#xff0c;基本都在两点上下功夫&#xff1a;1. 生产力上 2. 稳定性上 二、集群模式 今天又有人问起来rabbitmq的高可用方式&#xff0c;因为和常见的主从模式有点区别&#xff0c;所以就记录一下。 rabbitmq集群的镜像队列提供了更高级的主…

再见,Visual Basic——曾经风靡一时的编程语言

2020年3月&#xff0c;微软团队宣布了对Visual Basic&#xff08;VB&#xff09;的“终审判决”&#xff1a;不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件&#xff0c;自1991年问世以来&#xff0c;便受到了广大…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(15)-Yolov9探索

SS928移植yolov8问题暂未解决&#xff0c;对比SVP NNN和NNN两个NPU核&#xff0c;SVP NNN是不支持transpose层&#xff0c;仅支持CPU里运行&#xff0c;去掉这个层认为不现实&#xff0c;NNN里倒是写的在onnx模型里支持transpose&#xff0c;应该是在NPU里运行。 一种方式是转c…

浅谈密码学

文章目录 每日一句正能量前言什么是密码学对称加密简述加密语法Kerckhoffs原则常用的加密算法现代密码学的原则威胁模型&#xff08;按强度增加的顺序&#xff09; 密码学的应用领域后记 每日一句正能量 人生在世&#xff0c;谁也不能做到让任何人都喜欢&#xff0c;所以没必要…

2024全国水科技大会暨工业废水减污降碳及资源化利用论坛

论坛召集人 张炜铭 南京大学教授 杨 洋 中华环保联合会水专委总工 一、会议背景 为为推动绿色转型&#xff0c;服务低碳发展&#xff0c;迅速贯彻落实《中共中央国务院关于全面推进美丽中国建设的意见》要求&#xff0c;以高品质生态环境支撑高质量发展&#xff0c;我会与福…

离线数仓(四)【数仓数据同步策略】

前言 今天来把数仓数据同步解决掉&#xff0c;前面我们已经把日志数据到 Kafka 的通道打通了。 1、实时数仓数据同步 关于实时数仓&#xff0c;我们的 Flink 直接去 Kafka 读取即可&#xff0c;我们在学习 Flink 的时候也知道 Flink 提供了 Kafka Source&#xff0c;所以这里不…

MySQL 8.0.35 企业版比社区版性能高出 25%?

前言 说实话&#xff0c;比较一下这两个 MySQL 发行版&#xff0c;并不会让我很兴奋。这是因为在我关于 MySQL 的记忆中&#xff0c;如果是谈代码库时&#xff0c;两个发行版之间没有真正的区别。 据我所知&#xff0c;企业版的差异在于附加的插件/组件&#xff0c;因此除非您…

【GO开发工程师】grpc入门#golang

【GO开发工程师】grpc入门#golang 推荐个人主页&#xff1a;席万里的个人空间 文章目录 【GO开发工程师】grpc入门#golang1、什么是grpc和protobuf&#xff1f;2、protobuf3、grpc3.1、流模式 1、什么是grpc和protobuf&#xff1f; gRPC&#xff08;gRPC Remote Procedure Call…

3D可视化项目,选择unity3D还是three.js,是时候挑明了。

2023-08-10 23:07贝格前端工场 Hi&#xff0c;我是贝格前端工场&#xff0c;在开发3D可视化项目中&#xff0c;是选择U3D还是three,js时&#xff0c;很多老铁非常的迷茫&#xff0c;本文给老铁们讲清楚该如何选择&#xff0c;欢迎点赞评论分享转发。 一、Unity3D和three.js简…

专业140+总分400+华中科技大学824信号与系统考研经验华科华中大电子信息与通信工程,真题,大纲,参考书。

今年考研落下帷幕&#xff0c;看到有人落寞&#xff0c;有人金榜题名&#xff0c;心里体会五谷杂陈&#xff0c;自己很幸运通过努力上岸华科&#xff0c;初试专业课824信号与系统140&#xff0c;数一130&#xff0c;总分400&#xff0c;对于这个成绩稍微有点超出自己预期&#…

深度学习--pytorch的各种处理

什么是深度学习 机器学习是实现人工智能的一种途径。 深度学习是机器学习的一个子集&#xff0c;也就是说深度学习是实现机器学习的一种方法 传统机器学习算术依赖人工设计特征&#xff0c;并进行特征提取&#xff0c;而深度学习方法不需要人工&#xff0c;而是依赖算法自动提…

使用vuetify实现全局v-alert消息通知

前排提示&#xff0c;本文为引流文&#xff0c;文章内容不全&#xff0c;更多信息前往&#xff1a;oldmoon.top 查看 简介 使用强大的Vuetify开发前端页面&#xff0c;结果发现官方没有提供简便的全局消息通知组件&#xff08;像Element中的ElMessage那样&#xff09;&#xf…
推荐文章