redis

高并发基本概念

  名词解决

    高并发:多人同时访问同一个WEB应用程序

    高可用:在高并发的运行环境中,保证WEB应用程序正常运行

需求

  在高并发的环境下面,要达到高可用的目标

解决方案

  方案指的是解决高并发问题的一系列方法,必不局限于某一种(硬件层面、软件层面、思想层面)

Redis数据库

  基于内存的,以key-value形式保存数据的数据库硬件层面

Rabbitmq

  消息队列(时间换高可用)

Spring cloud

  系统架构层面的解决方案

  微服务架构(去中心化的思想)(思想层面的解决方案)

系统架构层面核心概念

  集群部署

  分布式部署

  微服务部署

集群部署

  分布式部署(拆分概念)

微服务部署

  软件即服务

  Spring cloud

    正在实现微服务思想的框架技术

Redis数据库

  什么是redis

    Redis是完全开源免费的,遵守BSD协议,

    是一个高性key-value内存数据库(具备持久化的能力

  为什么会有redis

    高并发的必然产物

谁在用

  Google、Qq、Alibaba

宣传口号

  NOSQL

  NO SQL

  NOT ONLY SQL

存储方式

  采用key-value的方式存储数据  类似集合框架中的map

Redis的特点

  1. Redis支持数据的持久
  2. Redis不仅仅支持简单的key-value ,同时还提供 list set zset hash等数据结构
  3. Redis 支持数据备份master-slave(主从模式的数据备份)

安装配置

  直接解决

微软

  https://github.com/MicrosoftArchive/redis/releases

文件说明

  Redis-server.exe 数据库主程序

  Redis-cli.exe 命令行的管理工具

  Redis.window.conf 主程序的配置文件(访问端口等参数

运行(打开cmd)

  1.先跳目录

  Cd E: ginx_tomcat_redis edis-clusterRedis-x64-3.2.100

  执行这条命令 redis-server.exe redis.winwos.conf

redis 数据库的使用 

   数据类型

   String 字符

  1. 最大 512m
  2. 类似java中的字符串
  3. 语法

    a) Set key value

    b) Get key

    c) Del key

   Hash 哈希

  1. 每个hash可以存储2^32-1键值对
  2. 类似java中的hashMap
  3. 语法

    a) hset key 属性 属性值

    b) hmset key 属性1 属性值1 [属性2 属性值2]

    c) hget key 属性名

    d) hgetall key

   list 列表

  1. 列表最多可存储2^32-1
  2. 类似LinkedList
  3. 语法

    a) 可以左推送和右推送

    b) 可以右取左推

    c) Rpush key 属性名 属性值

    d) Lpush key 属性名 属性值

    e) Lrange key start stop (下标从0开始)

    f) Lpop key

    g) Rpop key

   Set 集合

  1. 类似HashSet
  2. 重复的值会被忽略
  3. 语法

    a) sadd key  [2]

    b) smembers key 查看

    c) spop key

    d) srem key  删除

    e) sdiff key1 key2 返回两个集合不同的值(只包含第一个集合)

    f) sinter key1 key2 返回两个集合的交集(只包含第一个集合

   sorted-set 有序集合

   语法

    Zadd key 序号  序号2

    Zrange key start stop (start0开始 stop -1 获取到最后一个值)

    Zrange key start stop withscores (返回结果包含序号)

注:值不能重复,序号可以重复,并且可以是小数

特殊用法

  加减操作

    Incr  1

    Decr  1

    Incrby n

    Decrby n

商品维度(喜欢数、评价数、浏览数)

  hset product:10001 like 4

  hset product:10001 comment 5

  hset product:10001 visitor 6

 

  hincrby product:10001 like 3

  hget product:10001 like

  hgetall product:10001

用户维度(关注数、粉丝数、动态数、发帖数)

  hset user:1 follow 10

 

存储社交关系

  有序集合

   Sorted-set

    zadd u:1:f 1 2

    Zadd u: 1:f 2 3

    Zadd u: 1:f 3 6

    Zadd u: 2:f 4 1

    Zadd u: 2:f 5 3

    Zadd u: 2:f 6 8

zintersore 把一个或多个交集的比较结果保存到一个新的集合中

zinterstore out:1:2 2 u:1:f u:2:f

zrange out:1:2 0 -1

api文档

https://redis.io/commands

http://redisdoc.com/ 

http://doc.redisfans.com/

性能测试

  cmd执行 redis-benchmark.exe  –n 10000 –q

JAVA连接redis

  Jedis 持久层框架

  Redis缓存

    持久层的二级缓存

    Spring boot 基于redis的缓存机制

Redis缓存使用

  依赖包

  配置文件

  注解

   @EnableCache 启动缓存

   @Cacheable 执行了查询,缓存查询结果

   @CachePut 执行了插入或修改,更新缓存数据

   @CacheEvict 执行删除,清除缓存

Redis安装部署

  核心概念

  主从复制

  达到高可用的目的

  负载均衡

主从模式示意图

安装配置主从模式

  1. 修改redis端口
原文地址:https://www.cnblogs.com/lin02/p/11485537.html