在正式开始学习redis之前,我们先来了解一下redis的基础知识和基本命令。
一:Redis基础知识
这部分我之前了解的还是比较少的,不能说我使用redis只会用一个set和get,但是也差不多吧……此处心里又想起了那句话:“我工作这几年用的redis到底是个啥?他有这么多功能?”
下边我们来了解一下redis的基础知识
1:Redis有16个数据库,默认使用第0个。
2:切换数据库:
select index
[root@VM-4-16-centos bin]# redis-cli
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]>
上方代码已经明确表示我们在使用第三个数据库
3:查看数据库空间:
DBSIZE
127.0.0.1:6379[3]> select 0 #切换回0数据库
OK
127.0.0.1:6379> set name camellia # 设置 name值
OK
127.0.0.1:6379> get 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:6379> set name camellia # 设置name
OK
127.0.0.1:6379> select 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:6379> get name # 获取name
"camellia"
127.0.0.1:6379> FLUSHALL # 清空所有数据库
OK
127.0.0.1:6379> get name # 获取name
(nil)
127.0.0.1:6379> select 3 # 切换数据库
OK
127.0.0.1:6379[3]> get name # 获取name
(nil)
二:rediskey基本命令:
1:设置key值:
Set key value
127.0.0.1:6379> set name hello # 设置name
OK
127.0.0.1:6379> get 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号数据库
(integer) 1
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
(integer) 1
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的基础知识。
有好的建议,请在下方输入你的评论。