Redis5.0.3 基于 NetCore 平台

1、Redis 基础信息

Redis(Remote Dictionary Server)官网:https://redis.io/

Redis命令:https://redis.io/commands

 Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。 它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。

1.1 Redis 发展历史

  1、最开始使用本机内存的NativeCache(NativeCache无法分布式共享),随着网站规模越大,我们需要一个分布式的缓存产品,Memcache诞生。

  2、随着memcache缓存大行其道,互联网规模进一步扩大,对应用程序性能要求越来越高以及应用场景的越来越多 【09年】,比如内存数据库,异构化消息队列 等等,而原来市面上的memcache 暴露了以下几个缺点:

    1. memcache就是一个巨大的hash表,数据结构单一,我们知道编程语言中数据结构类型众多。
      数据结构类型:【List,HashSet, Dictionary, SortDictionary, BitArray, Queue, Stack, SortList。。。。】 
    2. memcache 无法持久化,导致只能作为缓存使用,重启之后数据就会丢失。
    3. 无法做到规模化的集群,memcache可以使用 一致性hash 的方式做到一个简单的memcahce集群,非常依赖于客户端实现,也并非无损的。
      set username  jack     hash(username)=8亿 ,沿着顺时针走,碰到的第一个server节点就是要存放的节点。。。

 

1.2 Redis 特点

  • 概况
    可以在redis官网上看到,目前redis支持的数据类型之多,非常丰富: 
    Redis数据类型 String Bitmap List(双端队列) Set Geo Hash HyperLogLogs Stream SortetSet(SkipList)
    C#数据类型 String BitArray (LinkedList+Stack+Queue+List) HashSet --- Dictionary ---  --- SortDictionary(红黑树)
    • 持久化
      使用AOF追加模式,RDB模式,以及混合模式,既然能缓存,就可以当做一个memroy db使用。
      • AOF: 使用大量的操作命令进行数据恢复。
      • RDB: 内存快照磁盘化。
      • FixMode:混合两种。

      集群
        Redis自带的Cluster集群模式,Sentinel 和  第三方豌豆荚的Codis集群搭建。

 2、使用 CentOS 和 Docker 快速部署

虚拟机安装步骤:https://www.cnblogs.com/wyt007/p/10295834.html

2.1、centos 平台的部署

  • 安装

    首先到Redis官网获取Redis最新下载地址:http://download.redis.io/releases/redis-5.0.3.tar.gz
然后在CentOS7上面进行安装

mkdir /data
cd /data    
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar xzf redis-5.0.3.tar.gz
mv redis-5.0.3 redis
cd redis
make

如果出现  gcc:命令未找到  安装gcc并重新执行  make 

 

yum -y install gcc automake autoconf libtool make
//如果以上命令出现[Errno 256] No more mirrors to try.执行下面命令再重新安装gcc
yum clean all

 如果出现:致命错误:jemalloc/jemalloc.h:没有那个文件或目录,则执行下方命令

 

make MALLOC=libc 
  • 这时候我们查看是否成功安装Redis(/data/redis/src/  目录下有无redis-cli 与redis-server),并将它们拷贝到上级文件夹
cd /data/redis/src/
cp redis-cli ../
cp redis-server ../
  •  启动Redis
[root@localhost src]# cd /data/redis/
[root@localhost redis]# ./redis-server ./redis-conf

 

  • 查看端口
netstat -tlnp

 

  • 测试存储数据
[root@localhost ~]# cd /data/redis/
[root@localhost redis]# ./redis-cli 
127.0.0.1:6379> set username jack
OK
127.0.0.1:6379> get username
"jack"
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> keys *
1) "username"
  •  客户端退出命令
quit 
  • 启动的时候可能遇到启动错误

 redis.conf 这个文件里面 daemonize 改成 yes

  • 配置Redis

    Redis启动完成后是无法进行外网访问的,因此我们需要修改redis.conf

    protect-mode 保护模式

    bind 绑定网卡接口

bind 127.0.0.1   =>  bind 0.0.0.0
protected-mode yes  =>  protected-mode no

   现实场景:redis是生产内网部署,对外不开放端口。。。

  •  需要密码验证

  修改redis.conf 默认参数  # requirepass foobared 

      连接之后命令  auth <password> 

 

  • 修改文件存储目录rdb + logfile + aof(可选)

    rdb 修改redis.conf默认参数 dir ./ 文件夹路径

    logfile 修改redis.conf默认参数  logfile "" 文件名称,可以改成“redis.log”

  • 后台执行

    修改redis.conf默认参数  daemonize no ,改成  daemonize yes  这个问题 上面有写到了,启动redis 的时候会遇到问题

    会生成pid文件 /var/run/redis_6379.pid 存放进程号

2.2、Docker上进行部署

Docker 安装步骤:https://www.cnblogs.com/hsj007/p/10809398.html

  • 启动Docker
service docker start
  • 列出容器
docker ps

我们可以看到容器内是空的,我们接下来前往DockerHub下载安装redis(部分内容需要FQ)

  • 安装端口并绑定端口

          我这里是因为已经在虚拟机安装了Redis,占用了redis的6379端口,所以用外网6378端口映射docker6379端口
          安装完成会自动启动

docker run --name some-redis -p 6378:6379 -d redis

猜你喜欢

转载自www.cnblogs.com/hsj007/p/10809530.html