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. 【模拟+排序】花生采摘 luogu-1086

    题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". 鲁宾逊先生和多多都很 ...

  2. 运行ride.py报错,闪退

    报错信息如下: F:\Python3.8\Scripts>python ride.py<class 'robotide.preferences.configobj.UnreprError' ...

  3. 【Linux服务器双IP配置】如何实现不同IP的双网卡同时上网?

    一.环境和知识预备 我遇到问题的生产机器是CentOS release 6.8系统,不过这并不影响问题的解决,本质上都是一样的. 网关:一个网络连接到另一个网络的关口,也就是实现网络互连,俗称网络连接 ...

  4. (Opencv07)绘制边框

    (Opencv07)绘制边框 cv2.boundingRect(img) 这个函数可以获得一个图像的最小矩形边框一些信息 cv2.rectangle()可以画出该最小矩形边框 x, y ,w, h = ...

  5. Java预科:DOS命令及电脑快捷键

    Java预科:DOS命令及电脑快捷键 1.快捷键 常用快捷键 a/t +f4关闭窗口 cmd窗口打开快捷方式 1.开始+系统+命令提示符 2.win+r 输入cmd 3.在任意文件夹下面,按住shif ...

  6. 单片机学习(五)LCD1602和矩阵键盘的使用

    目录 LCD1602的使用 矩阵键盘的使用 矩阵键盘相关电路图 按键检测扫描 制作密码输入器 LCD1602的使用 首先LCD1602是外接在开发板上的液晶屏外设,如图所示: 我们主要使用它来代替动态 ...

  7. pwnable.kr之brainf*ck

    pwnable.kr之brainf*ck 今天又是被难倒的一天Orz,个人感觉pwnable.kr上的题都比较剑走偏锋,仔细做过去,一定会有很大的收获. 不多说了,今天看的是第二关的第一道题:brai ...

  8. 还怕问源码?Github上神级Android三方源码解析手册,已有7.6 KStar

    或许对于许多Android开发者来说,所谓的Android工程师的工作"不过就是用XML实现设计师的美术图,用JSON解析服务器的数据,再把数据显示到界面上"就好了,源码什么的,看 ...

  9. Android音视频开发(1):H264 基本原理

    前言 H264 视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264 以及 ffmpeg 等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大 ...

  10. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理

    ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...