1Redis的使用场景:
- 关系数据库的缓存
- 可以做任务队列(运行模块1,模块2,模块3,模块4,模块5 ........)
- 大量数据运算(两个集合求交集)
- 排行旁之类(redis非常擅长大量数据的排行榜)
- GEO地理位置(也是我们常用的附近的人)
Cd /usr/local/redis/src
运行服务端:./redis-server
另外启动一个客户端ssh窗口执行
运行客户端(默认连接本机6379端口):./redis-cli
劣势:这种部署方式不能进行集群部署
另外一台电脑登录redis执行:./redis-cli–hIP地址 –P 端口
2.2后端安装部署redis 【基础知识|redis简介-安装部署-命令说明】vim redis.conf 修改daemonize no 改成 daemonize yes如下图所示:
文章图片
执行:./src/redis-server ./redis.conf
查看:ps -ef |grep -i redis 可以看到redis的进程是否已经启动
3redis数据类型【重点内容】
- Redis使用的都是K-V数据类型
- Key:全部是字符串类型
- Value:字符串(string、hash、list(linkedlist链表,添加/删除效率极高)HSET、有序的set集合,一般的set集合是无序的)
- Key的名字是自定义的,不要太长
Mysql关系型数据库,二进制不安全;编码和解码只在客户端发生,不在客户端和磁盘编解码;项目创建是GBK或者UTF8以后都不会发生其他的
而MySQL编解码过程:
文章图片
5常用命令 5.1赋值操作
文章图片
文章图片
如果赋予项目的KEY,新的value会覆盖旧的value值
5.2取值
文章图片
5.3删除
文章图片
文章图片
5.4getset操作
文章图片
5.5lncr key计数器的使用:incr和decr只能对数值进行操作(递增和递减)
文章图片
5.6Decr
文章图片
5.7Incrby
文章图片
5.8decrby
文章图片
5.9string使用环境 主要用户保存JSON格式的字符串
5.10Hash命令 Hash----------{username:“张三”,age:14}
文章图片
文章图片
5.11增加数字
文章图片
6Jedis介绍
- Java的客户端支持:jedis、redisson、jredis、JDBC-redis
- Redis有什么命令,jedis就有什么方法
package cn.itcast.demo1;
import org.junit.Test;
import redis.clients.jedis.Jedis;
Public class Demo1{/**
*单实例链接redis数据库
*/
@Test
public viod run1(){
Jedis jedis = new Jedis("192.168.56.11",6379)
jedis.set("name","张三");
System.out.println(jedis.get("name"));
}
}
6.1Jedis链接redis的连接池代码
/**
* Jedis连接池
*/
@Test
public void run2(){//1.设置连接池的配置对象
JedisPoolconfig config = new JedisPoolConfig();
//设置池中最大链接数【根据自己的实际情况和赢家配置情况来定最大连接数量】
config.setMaxTotal(500);
//自己设置的最大连接数为500//设置空闲时池中保有的最大连接数【根据自己的实际情况和赢家配置情况来定最大连接数量】
config.setMaxIdle(10);
//2.设置连接池对象(解决连接到台服务器或者服务器集群去)
JedisPool pool = new JedisPool(config,"192.168.56.11",6379);
//3.从池中获取连接对象
Jedis jedis = pool.getResource();
System.out.println(jedis.get("name"));
//4.连接归还池中(说得很通俗点就是某个应用需要写信息连接redis结束后把这个连接关闭,释放CPU、内存,以便其他用户连接redis集群)
jedis.close();
}
6.2连接池工具jedisutils
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisUtils{
//1.定义一个连接池对象private final static JedisPool POOL;static{
//初始化操作
//1.设置连接池的配置对象
JedisPoolconfig config = new JedisPoolConfig();
//设置池中最大链接数【根据自己的实际情况和赢家配置情况来定最大连接数量】
config.setMaxTotal(500);
//自己设置的最大连接数为500//设置空闲时池中保有的最大连接数【根据自己的实际情况和赢家配置情况来定最大连接数量】
config.setMaxIdle(10);
//2.设置连接池对象
POOL= new JedisPool(config,"192.168.56.11",6379);
}/**
*从池中获取连接
*/public static Jedis getJedis(){
return POOL.getResource();
}
}
7持久化 7.1RDB持久化
- RDB:redis database(时间段内存中的数据写入到磁盘中,redis会fork一个子进程,这个子进程来进行持久化,会将数据写到一个临时文件,主进程不进行IO进行操作;优点就是:比AOF执行更加高效,恢复比较简单一次性操作完成;RDB最后一次持久化的数据可能丢失)
- Fork:fork的作用是复制一个与当前进程一样的进程;新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是一个全新的进程,并作为进程的子进程。
- RDB持久化的策略:
2)5分钟内修改了10万次
3)15分钟内修改了1次
优点:
- 适合大规模的数据恢复
- 对数据完整性和一致性要求不高
- 2分钟这个时间段有可能丢失数据
- Fork比较消耗CPU、内存等资源
8redis事务处理 What:可以一次执行多个命令,本质是一组命令的集合。一个事务的所有命令都会序列化,按顺序地串行化执行执行而不会被其他命令插入,不许加塞。
How:一个队列中,一次性、顺序性、排他性的执行一系列命令行。
1.事务的命令展示:
文章图片
2.执行命令显示结果:
文章图片
推荐阅读
- android|快速 AndroidX 迁移
- 位运算总结,&,|,^,~,>>,
- android|android ProgressBar 样式讲解
- memcmp的用法 详讲
- 【memcopy】
- 原码,反码,补码的表示范围总结
- 02|opencv 中图像的坐标系
- Oracle|Oracle SQL的硬解析和软解析