redis说明及部署
一、reids 概述
redis全称REmote DIctionary Server、一个基于KV的持久化分布式数据库、所编写的语言为C、与另一个分布式缓存Memcached有几分相似
但是redis所支持的数据存储类型要比Memcached丰富、这些数据类型包含:字符串(String)、列表(Lists)、哈希(Hash)、Set(集合)、Zset(有序集合)
同时redis还支持数据持久化、即将数据保存到磁盘、重启后可再次加载进行使用、所以这一点要强于Memcached
另一方面、因为redis是纯内存操作、所以其性能非常出色、读取的速度每秒可达十万、而写入的速度每秒可达八万、目前redis应用非常广泛、无论是国外的Github与Facebook、还是国内的淘宝和新浪均在使用它
1)redis 特点
1、运行机制: redis运行于内存、但可将数据保存到磁盘、一种为RDB、一种为AOF
2、原子性: 在reids中、所有的操作都是原子性的、要么都成功、要么都失败
3、高速读写: redis读取数据的速度每秒可达十万次、而写入数据的速度每秒可达八万次
4、丰富特性: 除了简单的KV之外、redis还支持String、List、Hash、Set、Zset等数据类型
5、数据备份: 与MySQL一样、redis也支持MS模式、同时还可以部署群集来提升性能和备份数据
2)redis 回收策略
1、volatile-lru: 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
2、volatile-ttl: 从已设置过期时间的数据集中挑选将要过期的数据淘汰
3、volatile-random: 从已设置过期时间的数据集中任意选择数据淘汰
4、allkeys-lru: 从数据集中挑选最近最少使用的数据淘汰
5、allkeys-random: 从数据集中任意选择数据淘汰
6、no-enviction: 禁止回收数据
注意:默认回收策略为 no-enviction、由配置文件中的 maxmemory-policy 选项指定
3)redis 数据类型
1、字符串(String)
最基本的数据类型、与Memcached一样、一个K对应一个V、在redis的String中可以包含任何数据、String的最大存储可达512MB
2、列表(List)
redis的列表为一个简单的字符串列表、按照查询顺序进行排序、可添加一个元素到列表头部(左边)与尾部(右边)
3、哈希(Hash)
redis中的Hash为一个KV的集合、同时也是一个String类型的Field和Value的映射表、适合存储对象
4、集合(Set)
redis中的Set为String类型中的无序集合、而集合是通过Hash表实现的
5、有序集合(Zset)
与上面的Set一样、且不允许重复的成员、不同的地方在于每个元素都会关联一个Double类型的分数、而redis就是通过分数来为集合中的成员进行从小到大的排序、虽然成员是唯一的、但分数可以重复
二、redis 部署
redis 参考:http://redisdoc.com/
1)安装依赖包
[root@redis ~]# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel tcl tcl-devel
2)下载软件包
[root@redis ~]# wget -c http://download.redis.io/releases/redis-3.2.13.tar.gz
3)安装redis
[root@redis ~]# tar xf redis-3.2.13.tar.gz -C /usr/src/ [root@redis ~]# cd /usr/src/redis-3.2.13/ [root@redis redis-3.2.13]# make -j 8 && make PREFIX=/usr/local/redis install && cd ~
4)创建对应的存储目录
提示:依次排序、目录为:配置文件目录、PID目录、日志文件目录、数据存储目录、socket文件存储目录
[root@redis ~]# mkdir /usr/local/redis/conf [root@redis ~]# mkdir /usr/local/redis/pid [root@redis ~]# mkdir /usr/local/redis/logs [root@redis ~]# mkdir /usr/local/redis/data [root@redis ~]# mkdir /usr/local/redis/socket
5)复制范本文件
[root@redis ~]# cp /usr/local/redis/bin/* /usr/local/bin/ [root@redis ~]# cp /usr/src/redis-3.2.13/redis.conf /usr/local/redis/conf/ [root@redis ~]# cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis.conf.bak
6)将redis添加为系统服务
[root@redis ~]# cat > /usr/lib/systemd/system/redis.service << EOF [Unit] Description=redis After=network.target [Service] Type=forking LimitNOFILE=65535 ExecStart=/usr/local/bin/redis-server /usr/local/redis/conf/redis.conf [Install] WantedBy=multi-user.target EOF
7)定义redis配置文件
[root@redis ~]# cat > /usr/local/redis/conf/redis.conf << EOF bind 0.0.0.0 port 6379 timeout 180 daemonize yes maxclients 6500 protected-mode yes requirepass abc-123 tcp-backlog 2048 tcp-keepalive 300 databases 16 supervised no syslog-enabled yes syslog-ident redis syslog-facility local0 loglevel notice logfile "/usr/local/redis/logs/redis.log" pidfile "/usr/local/redis/pid/redis.pid" unixsocketperm 755 unixsocket "/usr/local/redis/socket/redis.sock" slowlog-log-slower-than 5000 slowlog-max-len 128 dir "/usr/local/redis/data" save 900 1 save 300 10 save 60 10000 rdbcompression yes rdbchecksum no dbfilename dump.rdb stop-writes-on-bgsave-error no appendonly yes appendfsync everysec aof-load-truncated yes appendfilename appendonly.aof no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-rewrite-incremental-fsync yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no repl-backlog-size 1mb repl-backlog-ttl 3600 slave-priority 100 hz 10 maxmemory-policy noeviction activerehashing yes hash-max-ziplist-value 64 hash-max-ziplist-entries 512 list-compress-depth 0 lua-time-limit 5000 notify-keyspace-events "" list-max-ziplist-size -2 latency-monitor-threshold 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 client-output-buffer-limit normal 0 0 0 client-output-buffer-limit pubsub 32mb 8mb 60 client-output-buffer-limit slave 256mb 64mb 60 EOF
8)启动redis服务并将其设置为开机自启
[root@redis ~]# systemctl start redis [root@redis ~]# systemctl enable redis Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service. [root@redis ~]# [root@redis ~]# netstat -anput | grep redis tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 4244/redis-server 0
9)解决redis警告
[root@redis ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@redis ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local [root@redis ~]# echo net.core.somaxconn = 4096 >> /etc/sysctl.conf [root@redis ~]# echo vm.overcommit_memory = 1 >> /etc/sysctl.conf [root@redis ~]# echo vm.swappiness = 0 >> /etc/sysctl.conf [root@redis ~]# sysctl -p [root@redis ~]# systemctl restart redis
10)最后查看状态并确认无警告日志
[root@redis ~]# systemctl status redis
● redis.service - redis
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2020-01-17 10:36:29 CST; 9s ago
Process: 839 ExecStart=/usr/local/bin/redis-server /usr/local/redis/conf/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 846 (redis-server)
CGroup: /system.slice/redis.service
└─846 /usr/local/bin/redis-server 0.0.0.0:6379
1月 17 10:36:29 redis systemd[1]: Starting redis...
1月 17 10:36:29 redis systemd[1]: Started redis.
1月 17 10:36:29 redis redis[846]: Redis 3.2.13 (00000000/0) 64 bit, standalone mode, port 6379, pid 846 ready to start.
1月 17 10:36:29 redis redis[846]: Server started, Redis version 3.2.13
1月 17 10:36:29 redis redis[846]: The server is now ready to accept connections on port 6379
1月 17 10:36:29 redis redis[846]: The server is now ready to accept connections at /usr/local/redis/socket/redis.sock
[root@redis ~]#
[root@redis ~]# tail -f /usr/local/redis/logs/redis.log
4244:M 17 Jan 10:35:52.960 * Calling fsync() on the AOF file.
4244:M 17 Jan 10:35:52.960 * Saving the final RDB snapshot before exiting.
4244:M 17 Jan 10:35:52.962 * DB saved on disk
4244:M 17 Jan 10:35:52.962 * Removing the pid file.
4244:M 17 Jan 10:35:52.962 * Removing the unix socket file.
4244:M 17 Jan 10:35:52.962 # Redis is now ready to exit, bye bye...
846:M 17 Jan 10:36:29.465 * Redis 3.2.13 (00000000/0) 64 bit, standalone mode, port 6379, pid 846 ready to start.
846:M 17 Jan 10:36:29.466 # Server started, Redis version 3.2.13
846:M 17 Jan 10:36:29.466 * The server is now ready to accept connections on port 6379
846:M 17 Jan 10:36:29.466 * The server is now ready to accept connections at /usr/local/redis/socket/redis.sock
11)连接redis
命令格式: redis-cli -h 地址 -a 密码 -p 端口 -n 库名
[root@redis ~]# redis-cli -h 10.2.3.11 -a abc-123 -p 6379 -n 0 10.2.3.11:6379> 10.2.3.11:6379> set k1 v1 OK 10.2.3.11:6379> get k1 "v1" 10.2.3.11:6379>
【只是为了打发时间】
redis说明及部署的更多相关文章
- Redis主-从部署实践
0. 前言 这篇文章简要介绍Redis的主从部署,实现了一主二从,使用两个哨兵监控,以实现简单的HA,其中从库作为备机. 1. 部署 这里有三台服务器,其中239主机上的Redis作为主库,其余两个作 ...
- Redis容灾部署(哨兵Sentinel)
Redis容灾部署(哨兵Sentinel) 哨兵的作用 1. 监控:监控主从是否正常2. 通知:出现问题时,可以通知相关人员3. 故障迁移:自动主从切换4. 统一的配置管理:连接者询问sentinel ...
- redis cluster安装部署(测试环境)
redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...
- redis的安装部署启动停止<17.3.21已更新>
--------------------------------------------------------- 启动redis时使用下面两条命令: redis-server /etc/redis. ...
- Redis集群部署及命令
一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...
- Redis介绍及部署在CentOS7上(一)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis集群部署-windows
Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...
- Redis集群部署文档(Ubuntu15.10系统)
Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...
- Redis + Redis-sentinel + keepalived部署过程
1 Redis缓存服务 Redis是一个key-value存储系统.与memcached一样,为了保证效率,数据都是缓存在内存中的.区别的是redis支持周期性的把更新的数据写入磁盘或者把修改操作 ...
- Redis集群部署3.0
我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4) Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...
随机推荐
- C++ | C++ 概览 基础知识 | 01
一.基本概念 1.1 类型.变量和算术运算 1.2 常量 1.3 检验和循环 1.4 指针,数组和循环 二.用户自定义类型 2.1 结构 2.2 类 2.3 枚举 三.模块化 3.1 分离编译 3.2 ...
- 原生js实现音乐列表(隔行换色、全选)
一.实现原理: 1.使用 % 运算符实现各行换色,规律:当%前面的值和后面的值相同时 结果为0: 2.使用开关思想,实现在同一个元素上反复点击时的条件判断,并且把开关以属性方式绑定在每个元素上: 3 ...
- 干货!直击JVM底层 —— Java Class字节码文件解析
目录 前言 如何阅读class文件 基本概念 无符号数&表 常量池 魔数(magic number) & 版本号 常量池 访问标志 类引索&父类引索&接口引索集合 字段 ...
- 如何使用poi在word表格中插入行的4种方法
本文记录了,在word表格中插入新行的几种方法.直接上代码说明 table.addNewRowBetween 没实现,官网文档也说明,只有函数名,但没具体实现,但很多文章还介绍如何使用这个函数,真是害 ...
- cogs 728. [网络流24题] 最小路径覆盖问题 匈牙利算法
728. [网络流24题] 最小路径覆盖问题 ★★★☆ 输入文件:path3.in 输出文件:path3.out 评测插件时间限制:1 s 内存限制:128 MB 算法实现题8-3 最 ...
- java 常用锁
公平锁和非公平锁 1.公平锁,是指多个线程按照申请的顺序来获取锁,类似排队打饭,先来后到. 2.非公平锁,是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程 比先申请的线程优先获取锁, ...
- 9.Break和Continue
Break直接跳出循环和Continue略过本次循环,循环继续执行: Break在任何循坏语句的主体部分,均可用break控制循环的流程.break用于强制退出循环,不执行循环体中的语句,后边语句继续 ...
- 20191211 HNOI2017模拟赛 C题
题目: 分析: 开始觉得是神仙题... 然后发现n最多有2个质因子 这说明sm呢... 学过物理的小朋友们知道,当一个物体受多个不同方向相同的力时,只有相邻力的夹角相等,受力就会平衡 于是拆扇叶相当于 ...
- git recommend(alive)
初始化并跟踪远程分支: echo "# test" >> README.mdgit initgit add README.mdgit commit -m "f ...
- kafka概念扫盲
一.kafka概述 1.1.定义 Kakfa是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域 1.2.消息队列 1.2.1.传统的消息队列&am ...