Redis八股文

发布于:2024-05-04 ⋅ 阅读:(27) ⋅ 点赞:(0)

1、安装redis

# 参考网址
https://www.cnblogs.com/hunanzp/p/12304622.html


# 下载redis安装包
wget http://download.redis.io/releases/redis-5.0.7.tar.gz

# 解压并安装redis
tar -zxvf redis-5.0.7.tar.gz

# 移动redis目录
mv /root/redis-5.0.7 /usr/local/redis

# 编译
cd /usr/local/redis
make
# 安装
make PREFIX=/usr/local/redis install
这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,

库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。


# 配置redis.conf
cd /usr/local/redis
vim redis.conf
daemonize yes  # 开启后台模式
port 6379  # 指定监听的端口
bind 127.0.0.1  # 如果需要远程登录,将这里注释掉
protected-mode yes|no  # 保护模式,如果需要远程登录,将其设置为no
databases 16  # 指定数据库的数量
requirepass xxx  # 指定登录密码
maxclients 0  # 最大连接数,设置为0表示不做限制


# 启动redis
cd /usr/local/redis
./bin/redis-server ./redis.conf

# 查看是否开启
netstat -tunlp | grep 6379
ps -aux | grep redis


# 配置redis-cli
如果redis-cli没有命令
ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli

2、常用命令

# 查看redis的版本
redis-cli -v

# 登录
redis-cli -h xxx.xxx.xxx.xxx -p 6379 -a xxx

# 查看key的总数
info keyspace

# 查询key
keys *

# 查看所有的配置
config get *

# 设置过期时间
expire xxx 100

# 查看过期时间
ttl xxx

# 查看redis的版本
redis-cli -v

#登录
redis-cli -a password  (前提:切换到对应用户上)
redis-cli -h <主机名或IP地址> -p <端口号> -a <密码>

3、面试题

3.1 什么是redis,优缺点?

redis本质上是一个key-value类型的内存数据库,很像Memcached,将整个数据保存在内存中操作,并定期通过异步操作将数据库的数据flush到磁盘中。

因为是纯内存操作,redis的性能非常出色,每秒可以处理超过10万次读写操作,

优点:

  • 读写性能高,读:10万次/s 写:8.1万次/s

  • 支持数据持久化 AOF 和 RDB两种方式

  • 支持事务,redis的所有操作都是原子性的

    • 单个操作是原子性

    • 多个操作通过multi和exec两个指令包起来

      127.0.0.1:6379> multi
      OK
      127.0.0.1:6379> set name xiaoming
      QUEUED
      127.0.0.1:6379> set age 18
      QUEUED
      127.0.0.1:6379> set gender sex
      QUEUED
      127.0.0.1:6379> exec
      1) OK
      2) OK
      3) OK
      127.0.0.1:6379>
      
      
  • 数据结构丰富,string,hash,set,zset,list类型

  • 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离

  • 丰富的特性,redis还支持publish/subscribe,通知,key过期等特性

缺点:

  • 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。

3.2 redis为什么这么快?

  • 内存存储:使用内存存储,没有IO开销。数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是O(1)。
  • 单线程实现:(redis6.0以前),避免多个线程之间线程切换和锁资源争用的开销
  • 非阻塞IO:使用多路复用IO技术。将epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。
  • 优化的数据结构:Redis有诸多可以直接应用的优化数据结构的实现,应用层可以直接使用原生的数据结构提升性能。
  • 使用的底层模型:Redis直接自己构建了 VM (虚拟内存)机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

网站公告

今日签到

点亮在社区的每一天
去签到