(三)、Redis入门

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: (三)、Redis入门

Redis

Redis 官网:https://redis.io/

源码地址:https://github.com/redis/redis

Redis 在线测试:http://try.redis.io/

Redis 命令参考:http://doc.redisfans.com/

REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行 并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

能干嘛

  • 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
  • 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
  • 模拟类似于HttpSession这种需要设定过期时间的功能
  • 发布、订阅消息系统
  • 定时器、计数器

怎么玩

  • 数据类型、基本操作和配置
  • 持久化和复制,RDB/AOF
  • 事务的控制
  • 复制(主从关系)

安装Redis

一、安装gcc依赖
yum install -y gcc 
二、下载并解压安装包
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
tar -zxvf redis-6.2.1.tar.gz
三、cd切换到redis解压目录下,执行编译
cd redis-6.2.1
make
四、安装并指定安装目录
[root@localhost redis-6.2.1]# make install PREFIX=/usr/local/redis
#复制一份配置文件到自己文件夹
[root@VM-4-15-centos ~]# mkdir myredis
[root@VM-4-15-centos ~]# cd redis-6.2.1
[root@VM-4-15-centos redis-6.2.1]#  cp redis.conf /root/myredis/

启动redis的三种方式

1.直接启动redis

在redis src目录下

[root@VM-4-15-centos redis-6.2.1] cd src

[root@VM-4-15-centos src] ./redis-server

16469:C 08 Aug 2021 00:33:43.312 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
16469:C 08 Aug 2021 00:33:43.312 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=16469, just started
16469:C 08 Aug 2021 00:33:43.312 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
16469:M 08 Aug 2021 00:33:43.313 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.2.1 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 16469
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
16469:M 08 Aug 2021 00:33:43.313 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
16469:M 08 Aug 2021 00:33:43.313 # Server initialized
16469:M 08 Aug 2021 00:33:43.313 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
16469:M 08 Aug 2021 00:33:43.313 * Ready to accept connections

启动成功

2.修改配置文件 后台启动

在有redis.conf的目录下

[root@VM-4-15-centos myredis]# vi redis.conf

把 daemonize no 改为 daemonize yes

然后指定redis.conf文件启动

./redis-server 【redis配置文件所在路径】

[root@VM-4-15-centos src]# ./redis-server /root/myredis/redis.conf

关闭redis进程

[root@VM-4-15-centos src]# ps -aux | grep redis
root     17297  0.2  0.5 195544 10068 ?        Ssl  00:38   0:00 ./redis-server 127.0.0.1:6379
root     17494  0.0  0.0 112812   972 pts/1    R+   00:39   0:00 grep --color=auto redis

使用kill命令杀死进程

[root@VM-4-15-centos src]# kill 17297
3.开机自启

添加开机启动服务

[root@VM-4-15-centos src]# vi /etc/systemd/system/redis.service

复制内容

[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /root/myredis/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
ExecStart=/usr/local/redis/bin/redis-server 【redis配置文件所在路径】

测试 redis

[root@VM-4-15-centos src]# redis
127.0.0.1:6379> ping
PONG

表示这是一个正常的联通状态

关闭redis进程

[root@VM-4-15-centos src]# ps -aux | grep redis
root     17297  0.2  0.5 195544 10068 ?        Ssl  00:38   0:00 ./redis-server 127.0.0.1:6379
root     17494  0.0  0.0 112812   972 pts/1    R+   00:39   0:00 grep --color=auto redis

使用kill命令杀死进程

[root@VM-4-15-centos src]# kill 17297

Redis关闭

单实例关闭

redis-cli shutdown

在终端关机

shutdown

在终端退出

exit

Redis启动后的杂项知识

1.测试redis在机器运行的效能

在redis安装目录下输入

[root@VM-4-15-centos bin]#  redis-benchmark

2.默认16个数据库

类似数组下表从零开始,初始默认使用零号库,可在配置文件配置

  • select用于切换数据库
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]>
  • dbsize查看当前数据库的key的数量
127.0.0.1:6379> dbsize 
(integer) 4
  • keys *用于查看当前库的key
127.0.0.1:6379> keys *
1) "k1"
2) "myhash"
3) "key:__rand_int__"
4) "counter:__rand_int__"

keys k?相当于模糊查询

127.0.0.1:6379> keys k?
1) "k1"
  • flushdb:清空当前库
  • flushall:通杀全部库

统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上

Redis索引都是从零开始

为什么默认端口是6379:MDRZ

Vim命令

按 ESC,左下角就可以进行输入

:w 保存但不退出

:wq 保存并退出

:q 退出

:q! 强制退出,不保存

:e! 放弃所有修改,从上次保存文件开始再编辑命令历史

服务操作命令

systemctl start redis.service 启动redis服务

systemctl stop redis.service 停止redis服务

systemctl restart redis.service 重新启动服务

systemctl status redis.service 查看服务当前状态

systemctl enable redis.service 设置开机自启动

systemctl disable redis.service 停止开机自启动

相关实践学习
基于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
相关文章
|
3天前
|
NoSQL 关系型数据库 MySQL
redis 入门01
redis 入门01
8 0
|
9天前
|
缓存 NoSQL Java
【Redis系列笔记】Redis入门
本文介绍了Redis常用命令,以及SpringBoot集成Spring Data Redis和Spring Cache。Spring Data Redis 提供了对 Redis 的操作方法,而 Spring Cache 则提供了基于注解的缓存功能,可以方便地将方法的返回值缓存到 Redis 中,以提高性能和减少对数据源的访问次数。这样的集成可以帮助开发者更便捷地利用 Redis 来管理应用程序的数据和缓存。
84 4
|
16天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis内存淘汰(内存过期)策略
Redis入门到通关之Redis内存淘汰(内存过期)策略
31 3
|
16天前
|
存储 NoSQL Linux
Redis入门到通关之多路复用详解
Redis入门到通关之多路复用详解
20 1
|
16天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
32 1
|
16天前
|
NoSQL Ubuntu 关系型数据库
Redis入门到通关之Redis网络模型-用户空间和内核态空间
Redis入门到通关之Redis网络模型-用户空间和内核态空间
22 1
|
16天前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
21 1
|
16天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-Set篇
Redis入门到通关之Redis数据结构-Set篇
20 1
|
16天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-ZSet篇
Redis入门到通关之Redis数据结构-ZSet篇
22 1
|
16天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
33 1