# **掌握基礎的知識**
**1.redis 默認有16個數據庫**

**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.不同數據庫操作**
當然了不同的數據庫存有不同的數據庫,在當前數據庫不能操作其他數據庫的數據

**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上的,所以在內存上就是最佳的方案。