Redis5.0.3 基于 NetCore 平台
Posted hsj007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis5.0.3 基于 NetCore 平台相关的知识,希望对你有一定的参考价值。
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 暴露了以下几个缺点:
- memcache就是一个巨大的hash表,数据结构单一,我们知道编程语言中数据结构类型众多。
数据结构类型:【List,HashSet, Dictionary, SortDictionary, BitArray, Queue, Stack, SortList。。。。】 - memcache 无法持久化,导致只能作为缓存使用,重启之后数据就会丢失。
-
无法做到规模化的集群,memcache可以使用 一致性hash 的方式做到一个简单的memcahce集群,非常依赖于客户端实现,也并非无损的。
set username jack hash(username)=8亿 ,沿着顺时针走,碰到的第一个server节点就是要存放的节点。。。
- memcache就是一个巨大的hash表,数据结构单一,我们知道编程语言中数据结构类型众多。
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
[[email protected] src]# cd /data/redis/ [[email protected] redis]# ./redis-server ./redis-conf
- 查看端口
netstat -tlnp
- 测试存储数据
[[email protected] ~]# cd /data/redis/ [[email protected] 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
以上是关于Redis5.0.3 基于 NetCore 平台的主要内容,如果未能解决你的问题,请参考以下文章
Libra-Platform微服务平台基于SpringCloud(2020.0.0)+SpringCloudAlibaba(2021.1)+SpringBoot(2.4.2)+Vue3开发即将开源(代