码迷,mamicode.com
首页 > 其他好文 > 详细

Redis-简介及基本数据类型

时间:2019-10-03 18:01:48      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:set   perm   同步   smart   实例   安全   art   客户端   多核   

一、Redis简介

1.1、相关nosql产品及对比

1.1.1、Memcached

优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash、多核结构、多线程读写性能高。

缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高

1.1.2、Redis

优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高

缺点:多线程读写较Memcached慢

应用企业:新浪、京东、直播类平台、网页游戏

1.1.3、Tair

优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。

缺点:单机情况下,读写性能较其他两种产品较慢

技术图片

1.1.4、读写性能对比

memcached:适合多用户访问,每个用户少量的rw

redis :适合少用户访问,每个用户大量rw

技术图片

技术图片技术图片

技术图片

1.1.5、使用场景对比

Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景

Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景。

Redis一般是单机多实例架构,配合redis集群出现

1.2、redis功能介绍

1)Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品

2)Redis采用内存(In-Memory)数据集(DataSet)

3)支持多种数据类型

4)运行于大多数POSIX系统,如Linux、*BSD、OS X等

5)作者: Salvatore Sanfilippo

主要功能:

  1. 高速读写
  2. 数据类型丰富
  3. 支持持久化
  4. 多种内存分配及回收策略
  5. 支持事务
  6. 消息队列、消息订阅
  7. 支持高可用
  8. 支持分布式分片集群

1.3、redis应用场景

1)数据高速缓存

2)web会话缓存(session cache)

3)排行榜应用

4)消息队列

5)发布订阅

1.4、redis文档参考

1)redis.io

2)download/redis.io

3)redisdoc.com

4)redis.cn

二、Redis安装与配置

2.1、redis安装

1)下载软件包

[root@redis-master ~]# mkdir /data
[root@redis-master ~]# cd /data/ && wget http://download.redis.io/releases/redis-3.2.12.tar.gz

2)解压并重命名

[root@redis-master data]# cd /data
[root@redis-master data]# tar xzf redis-3.2.12.tar.gz
[root@redis-master data]# mv redis-3.2.12 redis

3)编译安装

[root@redis-master redis]# cd redis/ && make

4)环境变量设置

cat >>/etc/profile<<EOF 
export PATH=/data/redis/src:$PATH
EOF
source /etc/profile

5)编辑配置文件

mkdir /data/6379
cat >>/data/6379/redis.conf<<EOF
daemonize yes
port 6379
logfile /data/redis/redis.log
dir /data/redis
dbfilename dump.rdb
EOF

#+++++++++++++++++++++++++++++++++++++++++++++++++++
#配置文件说明
#配置文件路径/data/6379/
daemonize yes					#是否后台运行
port 6379						#默认端口
logfile /data/6379/redis.log	#日志文件位置
dir /data/6379					#持久化文件存储位置
dbfilename dump.rdb				#RDB持久化数据文件

6)指定配置文件启动

[root@redis-master redis]# redis-server /data/6379/redis.conf 
[root@redis-master redis]# ps -ef|grep redis
root      23544      1  0 17:34 ?        00:00:00 redis-server *:6379
root      23549  19597  0 17:34 pts/0    00:00:00 grep --color=auto redis

#关闭命令:redis-cli shutdown

7)redis启停脚本

#!/bin/bash
#Name:redis_start.sh
#Version:V1.0
USAG(){
    echo "sh $0 {start|stop|restart|login|ps|tail} PORT"
}
if [ "$#" = 1 ]
then
    REDIS_PORT=‘6379‘
elif 
    [ "$#" = 2 -a -z "$(echo "$2"|sed ‘s#[0-9]##g‘)" ]
then
    REDIS_PORT="$2"
else
    USAG
    exit 0
fi

REDIS_IP=$(hostname -I|awk ‘{print $1}‘)
PATH_DIR=/data/${REDIS_PORT}/
PATH_CONF=${PATH_DIR}/redis.conf
PATH_LOG=$PATH_DIR/redis.log
PASS=123
CMD_START(){
    redis-server ${PATH_CONF}
}
CMD_SHUTDOWN(){
    redis-cli -c -a $PASS -h ${REDIS_IP} -p ${REDIS_PORT} shutdown
}
CMD_LOGIN(){
    redis-cli -c -a $PASS -h ${REDIS_IP} -p ${REDIS_PORT}
}
CMD_PS(){
    ps -ef|grep redis
}
CMD_TAIL(){
    tail -f ${PATH_LOG}
}
case $1 in
    start)
        CMD_START
        CMD_PS
        ;;
    stop)
        CMD_SHUTDOWN
        CMD_PS
        ;;
    restart)
        CMD_SHUTDOWN
        CMD_START
        CMD_PS
        ;;
    login)
        CMD_LOGIN
        ;;
    ps)
        CMD_PS
        ;;
    tail)
        CMD_TAIL
        ;;
    *)
        USAG
esac

2.2、redis安全配置

当第一次指定ip,端口连接时:

[root@redis-master ~]# redis-cli -h 10.0.0.11 -p 6379   #报错
10.0.0.11:6379> set a 1
(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command ‘CONFIG SET protected-mode no‘ from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to ‘no‘, and then restarting the server. 3) If you started the server manually just for testing, restart it with the ‘--protected-mode no‘ option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

#redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。
禁止protected-mode: è不推荐
protected-mode yes/no (保护模式,是否只允许本地访问)

2.2.1、 安全配置方法

1)bind:指定ip进行监听

[root@redis-master ~]# vim /data/6379/redis.conf
bind 10.0.0.11  127.0.0.1

2)增加验证requirepass

vim /data/6379/redis.conf
requirepass 123456

登录安全验证:

[root@redis-master ~]# redis-cli shutdown
[root@redis-master ~]# redis-server /data/6379/redis.conf 

#方式一
[root@redis-master ~]# redis-cli -a 123456
127.0.0.1:6379> set a 1
OK

#方式二
[root@redis-master ~]# redis-cli
127.0.0.1:6379> auth 123456
OK

2.3、redis配置查看及修改

CONFIG GET *				#查看所有的配置
CONFIG GET requirepass		#查看密码
CONFIG SET requirepass 123	#修改密码,实时生效

Redis-简介及基本数据类型

标签:set   perm   同步   smart   实例   安全   art   客户端   多核   

原文地址:https://www.cnblogs.com/hujinzhong/p/11620122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!