Redis重制(三)redis基础知识与基本命令

19 阅读3分钟

在正式开始学习redis之前,我们先来了解一下redis的基础知识和基本命令。

 

一:Redis基础知识

这部分我之前了解的还是比较少的,不能说我使用redis只会用一个set和get,但是也差不多吧……此处心里又想起了那句话:“我工作这几年用的redis到底是个啥?他有这么多功能?”

 

下边我们来了解一下redis的基础知识

 

1:Redis有16个数据库,默认使用第0个。

1.jpg

 

2:切换数据库:

select index

[root@VM-4-16-centos bin]# redis-cli
127.0.0.1:6379select 3
OK
127.0.0.1:6379[3]>

上方代码已经明确表示我们在使用第三个数据库

 

3:查看数据库空间:

DBSIZE

127.0.0.1:6379[3]> select 0         #切换回0数据库
OK
127.0.0.1:6379set name camellia     # 设置 name值
OK
127.0.0.1:6379get name          # 获取 name值 表示设置成功
"camellia"
127.0.0.1:6379> DBSIZE              # 获取当前数据库中一共存储了多少个key
(integer) 7
127.0.0.1:6379> keys *               # 获取所有key
1"webscoket-1"
2"myhash"
3"mystream"
4"mylist"
5"name"
6"counter:__rand_int__"
7"key:__rand_int__"

 

4:查看所有的key

keys *

127.0.0.1:6379> keys *
1) "myhash"
2) "mystream"
3) "mylist"
4) "name"
5) "counter:__rand_int__"
6) "key:__rand_int__"

 

5:清空当前数据库

flushdb

127.0.0.1:6379> flushdb             # 清空当前数据库
OK
127.0.0.1:6379> keys *               # 查看所有key
(empty array)
127.0.0.1:6379>

 

清空所有数据库的内容:

FLUSHALL

127.0.0.1:6379set name camellia            # 设置name
OK
127.0.0.1:6379select 3                           # 切换数据库
OK
127.0.0.1:6379[3]> set name hello            # 设置name
OK
127.0.0.1:6379[3]> get name                    # 获取name
"hello"
127.0.0.1:6379[3]> select 0                       # 切换数据库
OK
127.0.0.1:6379get name                        # 获取name
"camellia"
127.0.0.1:6379> FLUSHALL                       # 清空所有数据库
OK
127.0.0.1:6379get name                        # 获取name
(nil)
127.0.0.1:6379select 3                           # 切换数据库
OK
127.0.0.1:6379[3]> get name                    # 获取name
(nil)

 

二:rediskey基本命令:

1:设置key值:

Set key value

127.0.0.1:6379set name hello                # 设置name
OK
127.0.0.1:6379get name                        # 获取name
"hello"

 

2:判断某个key值是否存在:

EXISTS name

127.0.0.1:6379> EXISTS name                   # 判断name是否存在
(integer) 1
127.0.0.1:6379> del name                        # 删除name
(integer) 1
127.0.0.1:6379> EXISTS name                   # 判断name是否存在
(integer) 0

 

3:删除键值

del key

127.0.0.1:6379> del name                 # 删除 key
(integer) 1
127.0.0.1:6379> EXISTS name            # 判断name是否存在
(integer) 0

 

4:将某个key转移到其他数据库

Move key index

127.0.0.1:6379> set name hello                # 设置key
OK
127.0.0.1:6379> move name 3                  # 将name转移到3号数据库
(integer1
127.0.0.1:6379> keys *                             # 查看一号数据库中是否存在name
(empty array)
127.0.0.1:6379> select 3                           # 切换3号数据库
OK
127.0.0.1:6379[3]> EXISTS name               # 判断是否存在name
(integer1
127.0.0.1:6379[3]>

 

5:设置过期时间 单位是秒

Expire key 10

127.0.0.1:6379> set name camellia                   # 设置name
OK
127.0.0.1:6379> expire name 50                      # 给name设置过期时间为50秒
(integer) 1

 

6:查看某个key还有多久过期:

Ttl key

127.0.0.1:6379> set name camellia                   # 设置name
OK
127.0.0.1:6379> expire name 50                      # 设置过期时间
(integer) 1
127.0.0.1:6379> ttl name                                 # 查看有效期时间
(integer) 7
127.0.0.1:6379> ttl name                                 # key过期之后值为-2
(integer) -2

 

7:查看当前key得类型:

type key

127.0.0.1:6379> set name camellia
OK
127.0.0.1:6379> type name
string

 

三:经典面试题:

为甚麽redis使用单线程还这么快?

Redis单线程:redis使基于内存操作,CPU不是redis的瓶颈。redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了。

1、误区1:高性能的服务器一定是多线程的?

2、误区2:多线程(CPU上下文会切换!)一定比单线程效率高!先去CPU>内存>硬盘的速度要有所了解!

核心:redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!!!),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,所以数据都存储在内存得情况下,单线程就是最佳的方案!

 

以上大概就是redis的基础知识。

 

有好的建议,请在下方输入你的评论。