① linux查看redis运行状态
systemctel status redis.service
② redis只能在linux下运行吗
Redis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux,
*BSD,
Mac
OS
X,
Solaris等)上安装运行。而且Redis并不依赖任何非标准库,也没有编译参数必需添加。redis的安装出奇的简单,这可能也是他风靡的一个原因,让人很容易上手,不像某些东西,编译阶段就能让人完全绝望。
另外windows也可以运行
③ 什么是Redis
redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存和部分文件中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
④ redis源码解读:单线程的redis是如何实现高速缓存的
redis可能是最近几年最火的缓存数据库方案了,在各个高并发领域都有应用。
这篇文章,我们将从源代码的角度来分析一下,为何如此一个高性能,高应用的缓存,会是单线程的方案,当然一个方案的高性能,高并发是多方面的综合因素,其它的因素我们将在后续解读。后续分析主要以LINUX操作系统为基础,这也是redis应用最广的平台。
单线程最大的受限是什么?就是CPU,现在服务器一般已经是多CPU,而单线程只能使用到其中的一个核。
redis作为一个网络内存缓存数据库,在实现高性能时,主要有4个点。
1.网络高并发,高流量的数据处理。
一个异步,高效,且对CPU要求不高的网络模型,这个模型主要是由OS来提供的,目前在LINUX最主流使用的是EPOLL,这个网上介绍很多,主要是基于事件驱动的一个异步模型。
2.程序内部的合理构架,调用逻辑,内存管理。
redis在采用纯C实现时,整体调用逻辑很短,但在内存方面,适当的合并了一些对象和对齐,比如sds等,在底层使用了内存池,在不同情况下使用的不太一样。
但整体处理上没有NGINX的内池设计巧妙,当然二者不太一样,NGINX是基于请求释放的逻辑来设计的,因此针对请求,可以一次申请大块,分量使用,再最后统一释放。
3.数据复制的代价,不管是读取数据或是写入数据,一般都是需要有数据复制的过程。
数据复制其实就是一次内存,真正的代价是在于存在大VALUE,当value值长度超过16KB时,性能会开始下降。因为单线程的原因,如果存在一个超大VALUE,比如20MB,则会因为这个请求卡住整个线程,导致后续的请求进不来,虽然后面的请求是能快速处理的小请求。
4.redis中数据结构中算法的代价,有些结构在大数据量时,代价是很高的。
很多时间,大家忽略了算法的运算代码,因为像memcached等这类是完全的KV缓存,不存在什么算法,除了一个KEY的查找定位HASH算法。
而redis不一样,提供了不少高阶的数据对象,这些对象具有上层的一些算法能力,而这些能力是需要比如GEO模块。
⑤ redis鏄鍗曠嚎绋嬭繕鏄澶氱嚎绋
Redis閲囩敤鐨勬槸鍗曡繘绋嬪崟绾跨▼妯″瀷鐨凨V鏁版嵁搴擄紝鐢盋璇瑷缂栧啓銆
瀹樻柟鎻愪緵鐨勬暟鎹鏄鍙浠ヨ揪鍒100000+鐨剄ps銆傝繖涓鏁版嵁涓嶆瘮閲囩敤鍗曡繘绋嬪氱嚎绋嬬殑鍚屾牱鍩轰簬鍐呭瓨鐨凨V鏁版嵁搴揗emcached宸銆俁edis骞舵病鏈夌洿鎺ヤ娇鐢↙ibevent锛岃屾槸鑷宸卞畬鎴愪簡涓涓闈炲父杞婚噺绾х殑瀵箂elect銆乪poll銆乪vport銆乲queue杩欎簺閫氱敤鐨勬帴鍙g殑瀹炵幇銆傚湪涓嶅悓鐨勭郴缁熻皟鐢ㄩ夌敤閫傚悎鐨勬帴鍙o紝linux涓嬮粯璁ゆ槸epoll銆
鍥犱负Libevent姣旇緝閲嶆洿閫氱敤浠g爜閲忎篃灏卞緢搴炲ぇ锛屾嫢鏈夊緢澶歊edis鐢ㄤ笉涓婄殑鍔熻兘锛孯edis涓轰簡杩芥眰鈥滆交宸р濆苟涓斿幓闄や緷璧栵紝灏遍夋嫨鑷宸卞幓灏佽呬簡涓濂椼
Redis鍗曠嚎绋嬬殑浼樼偣
1銆侀珮鏁堟墽琛岋細Redis鐨勫崟绾跨▼妯″瀷鎰忓懗鐫鎵鏈夌殑鎿嶄綔閮藉湪鍚屼竴涓绾跨▼涓鎵ц岋紝杩欎娇寰楁搷浣滄寚浠ょ殑鎵ц岄熷害闈炲父蹇銆傚洜涓虹嚎绋嬪垏鎹㈠拰璋冨害绛夊紑閿鍦ㄥ崟绾跨▼涓涓嶅瓨鍦锛屾墍浠Redis鍦ㄥ勭悊澶ч噺璇锋眰鏃讹紝鑳藉熶繚鎸侀珮鏁堢殑鎵ц岄熷害銆
2銆佺畝鍖栫紪绋嬫ā鍨嬶細瀵逛簬寮鍙戣呮潵璇达紝鍗曠嚎绋嬫ā鍨嬩娇寰楃紪绋嬪拰璋冭瘯鏇翠负绠鍗曘傜敱浜庡彧鏈変竴涓涓荤嚎绋嬶紝涓嶅瓨鍦ㄧ嚎绋嬪悓姝ュ拰鏁版嵁涓鑷存ч棶棰橈紝杩欒╁紑鍙戣呮棤闇鑺辫垂澶澶氱簿鍔涘幓澶勭悊骞跺彂闂棰橈紝鑰屽彲浠ヤ笓娉ㄤ簬涓氬姟閫昏緫鐨勫疄鐜般
3銆侀珮鍚炲悙閲忥細鐢变簬Redis鐨勫崟绾跨▼璁捐★紝瀹冭兘澶熼珮鏁堝湴澶勭悊澶ч噺鐨勮锋眰銆傚湪澶勭悊澶ч噺璇/鍐欐搷浣滄椂锛孯edis鐨勬ц兘闈炲父鍑鸿壊銆傜壒鍒鏄鍦ㄩ珮骞跺彂鍦烘櫙涓嬶紝Redis鍙浠ユ湁鏁堝湴淇濊瘉鎿嶄綔鐨勫疄鏃舵с