来看看我们是怎么玩儿 Redis 的

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis 作为当下主流的 NoSQL 数据库,已经成为企业级开发不可或缺的一个重要组件了,现在大大小小的项目都会用到它,并且最新的版本已经达到 5.x 了。从这篇文章开始,我们会用一个系列的文章详细的给大家介绍一下 Redis 底层实现和使用场景,希望能帮助大家更好的使用。

1. 概述

本篇是 Redis 系列的第一篇文章,我们主要对 Redis 做一下概述,以及详细的安装教程和简单使用,后面的文章会一步一步带大家走进 Redis 的细节部分。

Redis 简介

学任何一个技术,我们首先看的必定是官网,Redis 的官网是这样介绍的

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.

大致的意思是说:Redis 是一个开放源码(基于 BSD 协议)的内存存储数据结构,被用作于数据库,缓存。它支持数据结构有字符串、哈希、列表、集合、排序集合、位图、超日志、GEO。

特性

  1. 完全基于内存,大多数请求都是内存操作,非常快速;
  2. 数据结构简单,操作简单;
  3. 采用单线程,避免了不必要的上下文切换和竞争条件,不存在多进程或者多线程的切换;
  4. 使用多路复用 I/O 模型,非阻塞 IO;
  5. 多客户端支持,高可用架构。

2. 安装

方式一:采用 Docker 来安装 Redis

  1. 搜索镜像 docker search redis使用该命令可以搜索出所有的 redis 镜像列表

67.jpg

2.如果没有特殊版本需求,可以使用:docker pull redis 命令直接安装最新版本 Redis

3.下载过后使用 docker images | grep redis 命令查看已经获取到的镜像

68.jpg


  1. 启动 Redis 服务:docker run --name redis -d -p 6379:6379 redis --requirepass "123321"
  2.    docker run表示创建并运行一个容器;
  3.    --name redis表示创建一个名字为 redis 的容器;
  4.    -d表示后台运行;
  5.    -p 6379:6379表示将宿主机的 6379 端口映射到容器的 6379 端口上;
  6.    redis表示依赖的镜像名称;
  7.    --requirepass "123321"表示设置密码
  8. 查看运行的Redis 实例  docker ps | grep redis

69.jpg

方式二:下载编译安装

  1. 进入指定目录/usr/local/ 执行如下命令
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -xzvf redis-5.0.5.tar.gz
cd redis-5.0.5
make install

70.jpg

  1. 编译安装完成后在 src 目录下会生成 redis-server, redis-cli相关命令,同时在/usr/local/bin也会存在,如果没有可以拷贝进去,正常是会有的。
  2. 修改 redis.conf 配置文件
  3.    配置后台启动:daemonize yes
  4.    调整端口,如果需要的话:port 6379
  5.    设置 redis 日志路径:logfile /var/log/redis.log
  6.    设置 redis 密码:requirepass "123321"; 密码一定要设置,不然会被攻击
  7. 使用配置文件启动 redis 服务端:redis-server redis.conf
  8. 客户端登录并测试 redis-cli

71.jpg

  1. 至此,两种方式的安装都介绍完了,大家可以根据自己的情况采用一种方式安装学习。

3. 常用场景

Redis 作为 NoSQL 数据库,主要的使用场景如下:

  1. 缓存:用 Redis 作为缓存框架,将热点数据,高频的访问数据存放到 Redis 中,加快访问速度,降低对底层数据库的依赖,从而提高并发和性能。这个场景是最常用的一个场景,而且 Redis 本身提高过期时间和相应的淘汰策略,这个后面我们会讲到。
  2. 计数统计:Redis 本身支持加一和减一命令,单线程情况下可以帮我们做简单的计数功能,可以累积计算 pv 值,也很实用。
  3. 排序和集合操作:Redis 的 list 和 zset 数据结构可以用于需要实现排序如排行榜,最新评论,或者获取共同好友等场景。
  4. 消息队列:Redis 提供的 发布订阅(PUB/SUB)和 阻塞队列的功能,能够满足基本的消息队列的使用。
  5. 分布式锁:在分布式环境下,经常会使用的分布式锁,基于 Redis 的SET resource_name my_random_value NX PX 30000 也可以实现高性能的分布式锁。Redis 实现的分布式锁性能比数据库以及 zookeeper 实现的要高,可以参考之前的文章分布式下必备神器之分布式锁

4. 高级特性

Redis 有很多高级的特性,这里先简单罗列一下,后面的系列文章会详细介绍:

  1. 支持管道
  2. 可以批量执行 Redis 命令,生产中我们有时候需要处理大量的 Redis 数据,这个时候如果采用单个命令执行的话会非常耗时间,这个时候我们就可以生产符合 Redis 规则的文件,进行批量的处理,十分方便。
  3. 内存回收策略和 Key 的过期策略
  4. Redis 的内存回收和 Key 的过期策略,内部有多种不同方案的实现,后面我们会详细谈到。
  5. 支持 lua 脚本;
  6. Redis 的事物;
  7. Redis 的事物跟我们熟知的关系型数据库的事物有什么不同和区别呢?我们后面文章也会介绍。

5. 总结

这篇文章是 Redis 系列文章的第一篇,简单的给大家介绍了 Redis 的一些概述和基本特性,以及两种安装方式和一些常用的使用场景,下篇文章会开始介绍一些基本的命令使用以及逐渐的深入分析。大家在使用 Redis 的时候有什么坑或者心得可以分享的吗?欢迎到我们《Java 极客技术》知识星球来大家一起讨论,一起进步。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 NoSQL Java
10个很多人不知道的Redis使用技巧
10个很多人不知道的Redis使用技巧
|
7月前
|
NoSQL Redis 数据库
【怒怼大厂面试官】听说你精通Redis?说说Redis持久化
咳咳咳,看你简历写了精通Redis,那我就随便问问。主要有RDB持久化、AOF持久化。是这样,Redis服务器会维护一个AOF重写缓冲区,该缓冲区会在子进程创建新AOF文件期间,记录服务器执行的所有写命令。
【怒怼大厂面试官】听说你精通Redis?说说Redis持久化
|
7月前
|
存储 NoSQL 关系型数据库
Redis入门到通关之Redis介绍
Redis入门到通关之Redis介绍
39 0
|
7月前
|
NoSQL 网络安全 Redis
Redis进阶-Redis使用建议一二事
Redis进阶-Redis使用建议一二事
37 0
|
7月前
|
存储 NoSQL Linux
【Redis入门】 —— 关于Redis的一点儿知识
【Redis入门】 —— 关于Redis的一点儿知识
|
存储 缓存 NoSQL
Redis——听说你速度跟甲斗一样快?(上)
Redis——听说你速度跟甲斗一样快?(上)
|
存储 NoSQL 算法
|
存储 缓存 NoSQL