Redis八股文

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 (虚拟内存)机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

相关推荐

  1. Redis八股文

    2024-04-30 09:54:03       35 阅读
  2. 八股Redis

    2024-04-30 09:54:03       28 阅读
  3. 八股Day4 Redis

    2024-04-30 09:54:03       32 阅读
  4. 面试 Redis 八股文十问十答第三期

    2024-04-30 09:54:03       33 阅读
  5. 面试 Redis 八股文十问十答第四期

    2024-04-30 09:54:03       36 阅读
  6. 面试 Redis 八股文十问十答第二期

    2024-04-30 09:54:03       30 阅读
  7. 面试 Redis 八股文十问十答第五期

    2024-04-30 09:54:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 09:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 09:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 09:54:03       82 阅读
  4. Python语言-面向对象

    2024-04-30 09:54:03       91 阅读

热门阅读

  1. React

    2024-04-30 09:54:03       29 阅读
  2. 各种优化器及其优缺点(SGD,RMSProp,Adam及其变种)

    2024-04-30 09:54:03       37 阅读
  3. 机器学习-- 爬虫IntelliScraper 重大更新说明

    2024-04-30 09:54:03       35 阅读
  4. uni-app + vant 实现可搜索的popup

    2024-04-30 09:54:03       33 阅读
  5. Python基本数据类型

    2024-04-30 09:54:03       34 阅读
  6. iOS 创建开源库时如何使用图片和xib资源

    2024-04-30 09:54:03       38 阅读
  7. go设计模式之组合设计模式

    2024-04-30 09:54:03       33 阅读
  8. 解决拉取多个不同git项目下的ssh问题

    2024-04-30 09:54:03       34 阅读
  9. 【Python快速上手(四)】

    2024-04-30 09:54:03       31 阅读
  10. 【Golang】Gin 框架的多种类型绑定函数

    2024-04-30 09:54:03       34 阅读