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

时间:2024-03-03 22:23:55

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