redis:
1.什么是缓存?
  mybatis一级缓存和二级缓存
    mybatis的一级缓存存在哪?
    SqlSession,就不会再走数据库
  什么情况下一级缓存会失效?
    当被更新,删除的时候sqlsession结束,也就是最终一级缓存失效
二级缓存存在哪?
mapper中的命名空间中(namespace),namespace在内存中(tomcat服务器的内存中)
当tomcat服务器重启/停止就会失效
无论是一级缓存还是二级缓存都不会永远持久化数据在硬盘中
mybatis缓存使用率就会很低,而且使用范围很窄(只能使用到对数据库的增删改查)
当拥有10亿条数据的时候
user表中10亿条数据
select * from user
mybatis无法做到大批量数据的查询,查询都无法做到,数据也绝对不会进入到缓存中

2.什么数据会被存入到缓存中?
  2.1.经常用到的数据
  2.2.不会经常修改的数据
    身份证号,性别,名字,省市区,国家名称,组织机构...
    把经常用到并且不会经常发生修改的数据存入到数据库某张表中叫做字典表
    商品名称,商品类目....

3.什么是redis
  称之为缓存,是一个数据库,非关系型数据库
关系型数据库:
  mysql
  oracle
  表和表之间产生关联,数据和数据之间也可以产生关联,称之为关系型数据库
非关系型数据库:
  NOSQL
  没有sql的数据库,数据和数据之间是独立存在的,没有关系,也没有表的概念
  Redis:键值对对应的数据库(数据格式以key和value对应,json,redis中存的就是json格式的数据)
  {key:value, key:value}
  key:[{key, value}, {key, value}]
面试题:
redis中的数据类型都有什么?
  5种
  key的类型永远是String
  value的类型是可以改变
  String(使用最多的就是String类型)
  Hash
  List
  新版本支持Set:是无序,并且数据唯一(不会重复)(数据不能重复)
  zSet:是有序,并且数据唯一(数据的标识唯一(索引是唯一的)),数据可以重复
老版本依然是Map
(homework:把所有的类型全部查一遍,弄明白,周一随机问)

MongoDB:文档型数据库
HBase:列数据库
所有的NOSQL数据库都在内存中做计算,数据会永久的保存在硬盘中
当redis启动后,redis会自动向硬盘中加载数据,把这些数据加载到内存中,等待客户端进行查询数据,客户端其实是从内存中把数据获取到,所以效率会非常快!应用场景一般情况下只能应用缓存!
redis是以集群的形式存在,在官方文档中说明,如果需要配置redis缓存库,最少需要六台(三主三从)

4.redis的缺点:
  4.1.redis必须以集群的形式的存在(6台),占用的资源就非常多!
  4.2.主从之间需要数据的同步
    master-->10万条数据
    follower-->10万条数据
    硬盘占用也非常大
  4.3.redis是在内存中所运算(10万条数据缓存信息),就会占用非常大的内存
  4.4.因为最终因为redis加载机制问题,硬盘和内存需要进行交互,会占用非常大的CPU

5.linux配置redis集群
  需要6台服务器(三主三从)
今天使用一台服务器模拟六台
根据端口号的不同进行模拟
5.1.从官网下载redis5.0.5
5.2.使用xftp工具上传linux服务器上
5.3.解压redis的压缩包
tar -zxvf xxxx
5.4.编译redis
进入redis的目录
make && make install
redis不是用Java写的,redis是用C语言写的
看到以下信息说明编译成功
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory `/home/apps/redis-5.0.5/src'
5.5.在redis的目录中创建redis_cluster文件夹
mkdir redis_cluster
5.6.在redis_cluster中分别创建端口号的文件夹(6380-6385,redis的默认端口号为6379)
mkdir 6380...6385
5.7.在6380中创建文件redis.conf
touch redis.conf
添加以下内容:
#端口号
port 6380
#默认ip为127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.127.139
#redis后台运行
daemonize yes
#pidfile文件对应6380,6381,6382...
pidfile /var/run/redis_6380.pid
#开启集群,把注释#去掉
cluster-enabled yes
#集群的配置,配置文件首次启动自动生成 6380,6381,6382
cluster-config-file nodes_6380.conf
#请求超时,默认15秒,可自行设置
cluster-node-timeout 10100
#aof日志开启,有需要就开启,它会每次写操作都记录一条日志
appendonly yes
需要进行修改:
port 6380
bind 本机的ip地址
pidfile /var/run/redis_6380.pid(根据端口号修改)
cluster-config-file nodes_6380.conf(根据端口号修改)
5.8.分别向6381-6385copy一份
cp -r redis.conf ../6381
5.9.分别根据5.7这一步的配置进行修改
5.10.启动redis的集群
一定要在src目录下启动,在其他的地方无法启动
./redis-server ../redis_cluster/6380/redis.conf
./redis-server ../redis_cluster/6381/redis.conf
./redis-server ../redis_cluster/6382/redis.conf
./redis-server ../redis_cluster/6383/redis.conf
./redis-server ../redis_cluster/6384/redis.conf
./redis-server ../redis_cluster/6385/redis.conf
看到以下信息说明启动成功:
7964:C 23 Aug 2019 09:51:54.935 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7964:C 23 Aug 2019 09:51:54.935 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=7964, just started
7964:C 23 Aug 2019 09:51:54.935 # Configuration loaded
5.11.检测redis集群是否启动成功
ps -ef | grep redis
看到以下信息说明启动成功:
root 7940 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6380 [cluster]
root 7945 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6381 [cluster]
root 7950 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6382 [cluster]
root 7955 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6383 [cluster]
root 7960 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6384 [cluster]
root 7965 1 0 09:51 ? 00:00:00 ./redis-server 192.168.23.145:6385 [cluster]
5.12.创建redis的缓存库
因为redis最终是以数据库的形式的存在,原理和mysql一样,集群创建成功只能说明安装redis成功了,但是最终redis中并没有自带的缓存库,需要自己手动创建
!!!!还需要在redis的src中进行
!!!当第一次运行的话,才需要创建数据库,以后的每一次运行都不再需要了,直接启动集群即可!!!
redis-cli --cluster create 192.168.23.138:6380 192.168.23.138:6381 192.168.23.138:6382 192.168.23.138:6383 192.168.23.138:6384 192.168.23.138:6385 --cluster-replicas 1
!!!!需要自己手动输入yes,如果超时了还没有输入,则会自动退出,需要再次创建!!!!!!
看到以下信息说明创建redis缓存库成功:
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
5.13.进入redis的缓存中
也必须要在src目录下进行
./redis-cli -h 192.168.23.138 -c -p 6380
5.14.停止redis
也必须要在src目录下进行
./redis-cli -h 192.168.23.145 -p 6380 shutdown
./redis-cli -h 192.168.23.145 -p 6381 shutdown
./redis-cli -h 192.168.23.145 -p 6382 shutdown
./redis-cli -h 192.168.23.145 -p 6383 shutdown
./redis-cli -h 192.168.23.145 -p 6384 shutdown
./redis-cli -h 192.168.23.145 -p 6385 shutdown
5.15.全部关闭
pkill redis(不推荐使用!!!)

6.强调
在redis中是没有修改操作的
只有增删查
如果需要修改的话,需要进行覆盖
新增:
set key(String) value(任意改变(5种))-->返回值是"OK"
查询:
get key(String) --> value(存入的类型)
删除:
del key(String) -->返回值是Integer(受影响的行数)
设置缓存的失效时间:
expire key(String) seconds(秒,Long/Integer)-->返回值是Integer(受影响的行数)

Redis笔记(一)的更多相关文章

  1. 【Redis笔记(四)】 Redis数据结构 - list链表

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50573605 经过前面的介绍,我们学习了Redis中string字符串.hash ...

  2. redis笔记之一

    NoSQL简介 全称是Not Only SQL,泛指菲关系型数据库,它是通过键值对存储数据并且将数据存储在内存中.而像mysql,sql server这些通过关系表存数据的就叫关系型数据库 为什么需要 ...

  3. Redis 笔记 01:入门篇

    Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  4. redis笔记总结之redis介绍

    一.Redis介绍: redis的发展历史简单的理解为因为使用类似MySql这类关系型数据库不方便进而开发的开源的.轻量级的.非关系型的,直到现在一直不断完善的一款NoSql数据库.具体的介绍大家可以 ...

  5. Redis笔记(1)数据结构与对象

    1.前言 此系列博客记录redis设计与实现一书的笔记,提取书本中的知识点,省略相关说明,方便查阅. 2.基本数据结构 2.1 简单动态字符串SDS(simple dynamic string) 结构 ...

  6. 2020ubuntu1804server编译安装redis笔记(一)及报make test错误解决办法

    redis的大名我想大家都不陌生,今天在ubuntu server上进行编译安装,虽然apt也可以安装,但作为内存数据库,redis又是c开发的,编译安装,对机器的适应和性能更好. 安装笔记如下 第1 ...

  7. 2020ubuntu1804server编译安装redis笔记(三)启动服务和使用redis

    第一篇笔记记录了ubuntu1804server编译安装redis5,接下来要配置redis5了 网址:https://www.cnblogs.com/qumogu/p/12435694.html 第 ...

  8. redis笔记补充

    redis补充 这篇文章是redis入门笔记的补充. 1.info命令 用来显示服务的信息. info命令可以跟下面的选项: server: 关于 Redis 服务器的一些信息 clients: 客户 ...

  9. redis笔记

    redis字符串 : 存储基本的一个键值对. redis哈希 : Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型. 一个哈希表可以存在多个键值对,可对键值进行增删 ...

  10. Redis笔记,安装和常用命令

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/96.html?1455870708 一.redis简单介绍 redis是N ...

随机推荐

  1. js里的发布订阅模式及vue里的事件订阅实现

    发布订阅模式(观察者模式) 发布订阅模式的定义:它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 发布订阅模式在JS中最常见的就是DOM的事件绑定与触发 ...

  2. Lambda 方法引用 构造器引用 数组引用

    一.方法引用 注意: 1.Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中的抽象方法的函数列表和返回值保持一致!2.若Lambda 参数列表中的第一个参数是实例方法的调用者,而第二个 ...

  3. dotnet部署出现Failed to load the dll from [ ... hostfxr.dll], HRESULT: 0x80070057

    起因 最近看到.net core 3支持wpf了,尝试一下(如果可行,会特别利于脱离.net运行时) dotnet new wpf dotnet publish -c Release -r win-x ...

  4. Java 中 this 和 super 的用法详解

    前言 这次我们来回顾一下this和super这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的 ...

  5. Vue--之调试

    vue.文件的调试 方法:在chrome浏览器中,F12,在Sources中ctrl+F 查找leftMenu.vue, 打断点,F8完成加载

  6. 论文笔记:(2019)LDGCNN : Linked Dynamic Graph CNN-Learning on PointCloud via Linking Hierarchical Features

    目录 摘要 一.引言 A.基于视图的方法 B.基于体素的方法 C.基于几何的方法 二.材料 三.方法 A.问题陈述 B.图生成 C.图特征提取 D.变换不变函数 E.LDGCNN架构 F.冻结特征提取 ...

  7. QT 如何在调试时能进入源码方式(MacOS)

    最近在学习QT, 遇到一些crash, 也没看过QT源码啊, 就想类似Java一样, 在出错时进入源码跟踪一下, 但是QT和Java太不一样了, 死活进不去. 研究了几天, 发现本来是很简单的事情, ...

  8. CF877B Nikita and string TJ

    前言的前言 本 TJ 同步发布于洛谷,在线求赞(bushi 前言 蒟蒻第一篇题解,在线求审核大大给过 awa. 如果此题解有什么问题的话欢迎各位大巨佬提出. 题目链接:CF877B 题目类型:dp,一 ...

  9. 20初识前端HTML(1)

    1 .HTML 1.1 网页的组成 文字 图片 链接 等元素构成.除了这些元素之外 网页中还可以包含音频 视频 等 1.2 WEB前端开发的流程 现在主流的开发流程: 前后端分离的开发模式. 美工:p ...

  10. 根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax

    基本介绍 XmlHttpRequest XmlHttpRequest是JavaScript中原生的,历史悠久的一种发送网络请求的方案. 基本上所有前端框架对于网络请求的部分都是基于它来完成的. 在本章 ...