• 周二. 9月 27th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

(三)、Redis入门

admin

11月 28, 2021

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

四、安装并指定安装目录
[[email protected] redis-6.2.1]# make install PREFIX=/usr/local/redis


#复制一份配置文件到自己文件夹
[[email protected] ~]# mkdir myredis
[[email protected] ~]# cd redis-6.2.1
[[email protected] redis-6.2.1]#  cp redis.conf /root/myredis/

启动redis的三种方式

1.直接启动redis

在redis src目录下

[[email protected] redis-6.2.1]# cd src
[[email protected] 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的目录下

[[email protected] myredis]# vi redis.conf

img

把 daemonize no 改为 daemonize yes

然后指定redis.conf文件启动

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

[[email protected] src]# ./redis-server /root/myredis/redis.conf

关闭redis进程

[[email protected] 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命令杀死进程

[[email protected] src]# kill 17297
3.开机自启

添加开机启动服务

[[email protected] 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

[[email protected] src]# redis
127.0.0.1:6379> ping
PONG

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

关闭redis进程

[[email protected] 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命令杀死进程

[[email protected] src]# kill 17297

Redis关闭

单实例关闭

redis-cli shutdown

在终端关机

shutdown

在终端退出

exit

Redis启动后的杂项知识

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

在redis安装目录下输入

[[email protected] bin]#  redis-benchmark

image-20210808204418051

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 #停止开机自启动

发表回复

您的电子邮箱地址不会被公开。