Redis核心原理
Redis单线程为什么还能这么快
Redis所有的数据都是在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗的问题。正因为Redis是单线程,所以要小心使用Redis指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。
Redis单线程为何能处理那么多的并发客户端连接
Redis的IO多路复用:redis利用epoll(epoll 是Linux内核中的一种可扩展IO事件处理机制)来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。
redis一万次set测试
RedisDBHelper
using StackExchange.Redis; using System; using System.Collections.Generic; using System.Text; namespace demo_20221010_redis { class RedisDBHelper { private ConnectionMultiplexer redis { get; set; } public IDatabase db { get; set; } /// <summary> /// 其实有个链接就行,一般都是默认本地。如果不是就再传 /// </summary> /// <param name="connection"></param> public RedisDBHelper(string connection) { redis = ConnectionMultiplexer.Connect(connection); db = redis.GetDatabase(); } } }
测试主函数
static void Main(string[] args) { RedisDBHelper redis = new RedisDBHelper("127.0.0.1:6379"); DateTime start = DateTime.Now; for (int i = 0; i < 10000; i++) { //redis.db.StringSet("key" + i, "666"); Console.WriteLine(redis.db.StringGet("key" + i)); } DateTime end = DateTime.Now; Console.WriteLine(end - start); }
Redis进行一万次的set操作共计消耗时间2.27秒
Redis进行一万次的get操作
sqlserver实验
这里前两天我做过实验了,数据是一个自增列,一个Name列,两列信息,添加一万次数据,总计消耗时间是13.5秒左右。我用的是DBHelper的方法,原生的那种你那个,速度应该是最快的,但是可以看到来与Redis的茶具还是非常大的呢。
我是使用的笔记本电脑进行测试的,如果使用PC机效果会更好。
演示的项目一不小心删掉了。但是我记得数据我就写上了。实际情况也可以自己测试。我这有现成的DBHelper,复制获取用用。