企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# **掌握基础的知识** **1.redis 默认有16个数据库** ![](https://img.kancloud.cn/0d/a8/0da813ced6f1b74a279ef31f87f61c9b_948x327.png) **2.select命令** ``` 如:select 3 127.0.0.1:6379> select 3 #切换数据库 OK 127.0.0.1:6379[3]> dbsize #查看数据库大小 (integer) 0 ``` **3.dbsize命令** ``` dbsize 查看当前数据库的文件大小 dbsize 127.0.0.1:6379> dbsize (integer) 5 ``` **4.不同数据库操作** 当然了不同的数据库存有不同的数据库,在当前数据库不能操作其他数据库的数据 ![](https://img.kancloud.cn/3d/3e/3d3e592d4797904d1e3f0675b1634d5f_784x472.png) **5.set命令** ``` set name wyoq 127.0.0.1:6379> set name wyoq OK ``` **6.keys命令** ```php 指令:keys * 【*号代表所有】 操作:keys name 127.0.0.1:6379> keys * 1) "myset:__rand_int__" 2) "mylist" 3) "key:__rand_int__" 4) "counter:__rand_int__" 5) "name" key值 OK ``` **7.get命令** ``` 指令 get key 【key键值】 操作如:get name 127.0.0.1:6379> get name "wyoq" value值 ``` **8.flushdb && flushall命令** ``` 指令 flushdb 【清空当前库所以的key指令】 操作如:flushdb 127.0.0.1:6379> keys * 1) "myset:__rand_int__" 2) "mylist" 3) "key:__rand_int__" 4) "counter:__rand_int__" 5) "name" 127.0.0.1:6379> get name "wyoq" 127.0.0.1:6379> flushdb 【清空操作】 OK 127.0.0.1:6379> get name (nil) 获取不到了 127.0.0.1:6379> keys * (empty list or set) flushall清空所有的库 ``` 思考:为什么redis端口号是6379 6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女[Alessia Merz](http://it.wikipedia.org/wiki/Alessia_Merz)的名字。MERZ长期以来被antirez及其朋友当作愚蠢的代名词。[Redis](http://blog.nosqlfan.com/tags/redis "查看 Redis 的全部文章")作者antirez同学在twitter上说将在下一篇博文中向大家解释为什么他选择[6379](http://blog.nosqlfan.com/tags/6379 "查看 6379 的全部文章")作为[默认](http://blog.nosqlfan.com/tags/%E9%BB%98%E8%AE%A4 "查看 默认 的全部文章")[端口](http://blog.nosqlfan.com/tags/%E7%AB%AF%E5%8F%A3 "查看 端口 的全部文章")号。而现在这篇博文出炉,在解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因。 ## **Redis是单线程的!** 因为redis非常快,官方表示,redis是基于内存操作,cpu不是redis的性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用了单线程。 ## **Redis为什么是单线程还快** 1.误区:高性能的服务器一定多线程的? 2.误区二:多线程(cpu上下文切换)一定比单线程高! 3.CPU速度 > 内存 > 硬盘 核心:redis是将所有的数据全部放在了内存中,所以说使用单线程去操作就是最高的(多线程CPU会进行上下文切换:耗时的操作!!)。对于内存来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,所以在内存上就是最佳的方案。