一、rediscover
Redis是一个基于内存的高性能键值对存储数据库,支持多种数据结构,例如字符串、哈希、列表、集合、有序集合等。它是一个开源的NoSQL数据库系统,由Salvatore Sanfilippo开发并维护,使用ANSI C编写,因此被称为Redis。
在.NET中,可以使用StackExchange.Redis包来操作Redis数据库,该包支持异步和同步方法,提供了一个简单的API,使开发人员能够轻松地与Redis交互。
二、redis持久化
Redis支持两种持久化方式——RDB和AOF。
RDB是一种快照方式,它将数据库的当前状态写入磁盘。这种方法通常用于定期备份数据库。可以通过修改Redis配置文件,设置RDB的保存和加载规则,以及备份策略和文件名等。
AOF是将所有执行的写操作记录到一个文件中,这个文件可以用来重建数据库。Redis提供了三种AOF日志记录模式,包括always、everysec和no,你可以选择合适的模式根据你的需要。
三、redis常用命令
using StackExchange.Redis;//连接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//获取redis数据库IDatabase db = conn.GetDatabase();//string类型db.StringSet("key","value");string result = db.StringGet("key");//hash类型db.HashSet("hashkey","field","value");string value = db.HashGet("hashkey","field");//list类型db.ListRightPush("listkey","value");string listValue = db.ListRightPop("listkey");//set类型db.SetAdd("setkey","value");bool isMember = db.SetContains("setkey","value");//zset类型db.SortedSetAdd("zsetkey","value",score);double score = db.SortedSetScore("zsetkey","value");
四、redis重启
在Windows下,可以使用以下命令重启Redis服务:
redis-cli.exe shutdownredis-server.exe redis.windows.conf
五、redis菜鸟教程
如果你对Redis不太熟悉,可以参考Redis官方提供的菜鸟教程,这是一个非常好的入门教程,包括Redis基础知识、Redis数据类型、Redis持久化、Redis事务等内容。
链接:https://www.runoob.com/redis/redis-tutorial.html
六、redis持久化方式有哪些
Redis提供两种持久化方式,即RDB和AOF。
RDB是Redis默认的持久化方式,它是在一段时间(例如30分钟)内,多个写操作累积到一定数目(例如10000个)时,Redis才会自动执行一次快照备份,保存数据库当前的数据状态到磁盘上。
AOF是将Redis服务器执行过的所有写操作缓存起来,以文本方式保存成日志文件,这样当Redis服务器重启时只需要将这个AOF文件重新执行一遍即可还原整个数据库。AOF持久化方式可以更加精确地保证数据的一致性和安全性。
七、redis查询key命令
Redis提供了keys、exists、type等命令,可以用来查询Redis数据库中的键值信息。
using StackExchange.Redis;//连接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//获取redis数据库IDatabase db = conn.GetDatabase();//查询所有keyvar keys = conn.GetServer("localhost").Keys();//判断key是否存在bool isExists = db.KeyExists("key");//获取key的类型RedisType type = db.KeyType("key");
八、redis存放库存
Redis可以作为一个非常优秀的库存系统,利用Redis的事务机制和原子操作可以实现高并发、高效、高可用的库存管理系统。
using StackExchange.Redis;//连接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//获取redis数据库IDatabase db = conn.GetDatabase();//库存数量int stock = 100;//商品编号string productNumber = "product123";//客户编号string customerid = "customer123";//生成订单号string orderId = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10000,99999);//开始一个事务var tran = db.CreateTransaction();//获取库存数量RedisValue val = tran.StringGetAsync(productNumber).Result;int stockcnt = (int)val;//如果库存足够,则减去库存数量,并且设置订单if (stockcnt >= 1){ tran.StringDecrementAsync(productNumber, 1); tran.StringSetAsync(orderId, customerid);}//执行事务bool success = tran.Execute();
九、redis常用方法
除了上述常用命令外,Redis还提供了很多方便、实用的方法,例如Lock、Publish、Subscribe、Scan等。
using StackExchange.Redis;//连接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//获取redis数据库IDatabase db = conn.GetDatabase();//Lock锁定bool islock = db.LockTake("key","value",TimeSpan.FromSeconds(10));if(islock){ //执行锁定的业务代码 //... //释放Lock db.LockRelease("key","value");}//Publish发布消息db.Multiplexer.GetSubscriber().Publish("channel","message");//Subscribe订阅消息db.Multiplexer.GetSubscriber().Subscribe("channel",(channel,msg) => { Console.WriteLine("channel:" + channel + ";message:" + msg);});//Scan遍历数据库var keys = db.Execute("SCAN",0,"MATCH","key*","COUNT",100);foreach(RedisValue key in keys){ Console.WriteLine(key);}
原创文章,作者:VXCG,如若转载,请注明出处:https://www.506064.com/n/145810.html