C#操作Redis:使用StackExchange.Redis库

C#操作 Redis:使用 StackExchange.Redis 库

Redis 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的特性,如事务、发布/订阅、Lua 脚本、持久化、主从复制、哨兵和集群等。在 C#中操作 Redis,StackExchange.Redis 是一个流行的客户端库,提供了简洁且功能强大的 API。

连接到 Redis 服务器:

using StackExchange.Redis;

class Program
{
    static void Main()
    {
        // 创建连接到 Redis 服务器的连接 Multiplexer
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("192.168.1.100,password=RedisPassword,connectTimeout=5000");

        // 获取数据库
        IDatabase db = redis.GetDatabase();

        // 存储数据
        db.StringSet("name", "Redis");

        // 读取数据
        string value = db.StringGet("name");
        Console.WriteLine($"Value retrieved from Redis: {value}");
    }
}

字符串操作:

Redis 的字符串类型是最基本的键值对类型,支持存储二进制数据。

// 存储字符串
db.StringSet("name", "Redis");

// 读取字符串
string name = db.StringGet("name");

// 设置带有过期时间的字符串
db.StringSet("cachekey", "Redis", TimeSpan.FromSeconds(10));

// 字符串自增
long newValue = db.StringIncrement("counter");

// 字符串自减
long decrementedValue = db.StringDecrement("counter");

哈希表操作:

Redis 的哈希表是一个 string 类型的 field 和 value 的映射表,适合存储对象。

// 存储哈希表字段
db.HashSet("redissetting", "name", "Redis");
db.HashSet("redissetting", "connstr", "192.168.1.100,password=RedisPassword,connectTimeout=5000");

// 读取哈希表字段
string name = db.HashGet("redissetting", "name");
string age = db.HashGet("redissetting", "connstr");

// 获取哈希表中的所有字段和值
HashEntry[] hashEntries = db.HashGetAll("connstr");
foreach (var entry in hashEntries)
{
    Console.WriteLine($"Field: {entry.Name}, Value: {entry.Value}");
}

列表操作:

Redis 的列表是一个链表,可以从两端插入和弹出元素。

// 从列表左侧插入元素
db.ListLeftPush("mylist", "item1");

// 从列表右侧插入元素
db.ListRightPush("mylist", "item2");

// 从列表左侧弹出元素
RedisValue leftPop = db.ListLeftPop("mylist");

// 从列表右侧弹出元素
RedisValue rightPop = db.ListRightPop("mylist");

// 获取列表中的所有元素
RedisValue[] listItems = db.ListRange("mylist", 0, -1);
foreach (var item in listItems)
{
    Console.WriteLine($"List item: {item}");
}

集合操作:

Redis 的集合是一个无序集合,适合去重。

// 向集合中添加元素
db.SetAdd("myset", "member1");
db.SetAdd("myset", "member2");

// 检查元素是否在集合中
bool isMember = db.SetContains("myset", "member1");

// 获取集合中的所有元素
RedisValue[] setMembers = db.SetMembers("myset");
foreach (var member in setMembers)
{
    Console.WriteLine($"Set member: {member}");
}

有序集合操作:

Redis 的有序集合与集合类似,但可以给每个元素附加一个分数,并根据分数排序。

// 向有序集合中添加元素
db.SortedSetAdd("mysortedset", "member1", 10.0);
db.SortedSetAdd("mysortedset", "member2", 20.0);

// 获取有序集合中的所有元素
SortedSetEntry[] sortedSetEntries = db.SortedSetRangeByScoreWithScores("mysortedset", double.MinValue, double.MaxValue);
foreach (var entry in sortedSetEntries)
{
    Console.WriteLine($"Sorted set member: {entry.Element}, Score: {entry.Score}");
}

 

 

 

 

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...