一、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说明及部署的更多相关文章

  1. Redis主-从部署实践

    0. 前言 这篇文章简要介绍Redis的主从部署,实现了一主二从,使用两个哨兵监控,以实现简单的HA,其中从库作为备机. 1. 部署 这里有三台服务器,其中239主机上的Redis作为主库,其余两个作 ...

  2. Redis容灾部署(哨兵Sentinel)

    Redis容灾部署(哨兵Sentinel) 哨兵的作用 1. 监控:监控主从是否正常2. 通知:出现问题时,可以通知相关人员3. 故障迁移:自动主从切换4. 统一的配置管理:连接者询问sentinel ...

  3. redis cluster安装部署(测试环境)

    redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...

  4. redis的安装部署启动停止<17.3.21已更新>

    --------------------------------------------------------- 启动redis时使用下面两条命令: redis-server /etc/redis. ...

  5. Redis集群部署及命令

    一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...

  6. Redis介绍及部署在CentOS7上(一)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  7. Redis集群部署-windows

    Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...

  8. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  9. Redis + Redis-sentinel + keepalived部署过程

    1   Redis缓存服务 Redis是一个key-value存储系统.与memcached一样,为了保证效率,数据都是缓存在内存中的.区别的是redis支持周期性的把更新的数据写入磁盘或者把修改操作 ...

  10. Redis集群部署3.0

    我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4)  Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...

随机推荐

  1. (2)MongoDB副本集自动故障转移原理

    前文我们搭建MongoDB三成员副本集,了解集群基本特性,今天我们围绕下图聊一聊背后的细节. 默认搭建的replica set均在主节点读写,辅助节点冗余部署,形成高可用和备份, 具备自动故障转移的能 ...

  2. HBase二次开发之搭建HBase调试环境,如何远程debug HBase源代码

    版本 HDP:3.0.1.0 HBase:2.0.0 一.前言 之前的文章也提到过,最近工作中需要对HBase进行二次开发(参照HBase的AES加密方法,为HBase增加SMS4数据加密类型).研究 ...

  3. Windows Terminal入门

    目录 0.引言 1.简易安装 2.初识WT 3.初识Settings 3.1全局配置 3.2每一个终端配置 3.3配色方案 3.4键位绑定 4.连接云服务器 5.连接WSL 6.玩转Emoji 0.引 ...

  4. zabbix3.4源码安装步骤

    zabbix3.4源码安装步骤1.安装环境: 安装机器:22.224.9.227 以下简称监控机: 操作系统信息:内核版本: Linux version 2.6.18-194.1.AXS3 (pack ...

  5. STM8 ADC 多个通道连续扫描缓冲区数据带中断模式的正确写法

    近日调试了STM8S的ADC采集多通道数据的程序,按照之前的立即,将ADC1设置为:扫描模式,连续采集,数据缓存模式,中断使能后应该可以在中断后读取到数值了,可是无论怎样都只能读取到第一个缓冲器的数据 ...

  6. C++ 对TXT 的串并行读写

    任务说明:有36篇文档,现在要读入,并统计词频,字典长度25,希望能够比较串并行读写操作的时间差距. 串行读入并统计词频 // LoadDocsInUbuntu.cpp // #include < ...

  7. Redis 面试题汇总

    Redis 面试题汇总 1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数.点击数.评论数 缓存近期热帖 缓存文章详情信息 记录用户会话信息 2.Redis 有哪些功能? ...

  8. C++ 函数详解

    C++函数完全兼容C函数定义的风格,但是也做出了一些改进.一方面,C++函数允许使用缺省参数值和占位参数:另一方面,C++提供了重要的函数重载机制:另外,为了解决C中臭名昭著的宏缺陷问题,C++提供了 ...

  9. SpringBoot学习遇到的问题(1) - 配置文件有日志的debug模式等配置项,为什么不起作用

    这个问题困扰我近乎两天,通过查找N多资料后终于解决,写下来共享给大家. logging.level.root=DEBUG ... 一系列的日志配置项,都不起作用的原因是springboot启动加载不到 ...

  10. 四 Shell条件测试

    条件测试操作 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,让我们可以方便的完成判断. 语法格式 test 选项 文件名或目录名 ...