2.6.14 jdbc批量插入几百万数据怎么实现?
1、变多次提交为一次
3、使用批量操作
省出的时间可观。
像这样的批量插入操作能不使用代码操作就不使用,可以使用存储过程来实现。
2.6.15 有没有使用过redis? Redis是什么
Redis是一个key-value的nosql数据库.先存到内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据。支持的数据类型比较多。
主要用来做缓存数据库的数据和web集群时当做中央缓存存放seesion
2.4.15 Redis和memche的比较?
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘
2.6.16 简单说一下redis的使用场景?
缓存:
把经常需要查询的、很少修改数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻压力,减少访问时间.
计数器:
redis中的计数器是原子性的内存操作。
可以解决库存溢出问题.进销存系统库存溢出。
session缓存服务器:
web集群时作为session缓存服务器
缓存队列等
2.6.17 redis对象保存方式?
Json字符串:
需要把对象转换为json字符串,当做字符串处理。直接使用set get来设置或者或。
优点:设置和获取比较简单
缺点:没有提供专门的方法,需要把把对象转换为json。(jsonlib)
字节:
需要做序列号,就是把对象序列化为字节保存。
如果是担心JSON转对象会消耗资源的情况,这个问题需要考量几个地方,
第一点:就是使用的JSON转换lib是否就会存在性能问题。
第二点:就是数据的数据量级别,如果是存储百万级的大数据对象,建议采用存储序列化对象方式。如果是少量的数据级对象,或者是数据对象字段不多,还是建议采用JSON转换成String方式。
毕竟redis对存储字符类型这部分优化的非常好。具体采用的方式与方法,还要看你所使用的场景。
2.6.18 Redis数据淘汰机制
在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 1.5G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。
内存大小有限,需要保存有效的数据?
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
redis 提供 6种数据淘汰策略:
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据
2.6.19 Java访问Redis
1、使用jedis java客户端来访问redis服务器,有点类似通过jdbc访问mysql一样。
2、当然如果是spring进行集成时,可以使用spring data来访问redis,spring data只是对jedis的二次封装。jdbcTemplate jdbc关系一样
2.6.20 Redis集群
当一台数据无法满足要求,可以使用reids集群来处理,类似于mysql的读写分离。