基础知识|redis简介-安装部署-命令说明

1Redis的使用场景:

  1. 关系数据库的缓存
  2. 可以做任务队列(运行模块1,模块2,模块3,模块4,模块5 ........)
  3. 大量数据运算(两个集合求交集)
  4. 排行旁之类(redis非常擅长大量数据的排行榜)
  5. GEO地理位置(也是我们常用的附近的人)
2redis安装部署方式 2.1前端安装部署redis
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如下图所示:
基础知识|redis简介-安装部署-命令说明
文章图片


执行:./src/redis-server ./redis.conf
查看:ps -ef |grep -i redis 可以看到redis的进程是否已经启动
3redis数据类型【重点内容】
  1. Redis使用的都是K-V数据类型
  2. Key:全部是字符串类型
  3. Value:字符串(string、hash、list(linkedlist链表,添加/删除效率极高)HSET、有序的set集合,一般的set集合是无序的)
  4. Key的名字是自定义的,不要太长
4redis命令-string命令
Mysql关系型数据库,二进制不安全;编码和解码只在客户端发生,不在客户端和磁盘编解码;项目创建是GBK或者UTF8以后都不会发生其他的
而MySQL编解码过程:
基础知识|redis简介-安装部署-命令说明
文章图片
5常用命令 5.1赋值操作 基础知识|redis简介-安装部署-命令说明
文章图片

基础知识|redis简介-安装部署-命令说明
文章图片

如果赋予项目的KEY,新的value会覆盖旧的value值
5.2取值 基础知识|redis简介-安装部署-命令说明
文章图片

5.3删除 基础知识|redis简介-安装部署-命令说明
文章图片

基础知识|redis简介-安装部署-命令说明
文章图片

5.4getset操作 基础知识|redis简介-安装部署-命令说明
文章图片

5.5lncr key计数器的使用:incr和decr只能对数值进行操作(递增和递减)
基础知识|redis简介-安装部署-命令说明
文章图片

5.6Decr 基础知识|redis简介-安装部署-命令说明
文章图片

5.7Incrby 基础知识|redis简介-安装部署-命令说明
文章图片

5.8decrby 基础知识|redis简介-安装部署-命令说明
文章图片

5.9string使用环境 主要用户保存JSON格式的字符串
5.10Hash命令 Hash----------{username:“张三”,age:14}
基础知识|redis简介-安装部署-命令说明
文章图片

基础知识|redis简介-安装部署-命令说明
文章图片

5.11增加数字 基础知识|redis简介-安装部署-命令说明
文章图片

6Jedis介绍
  1. Java的客户端支持:jedis、redisson、jredis、JDBC-redis
  2. 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持久化
  1. RDB:redis database(时间段内存中的数据写入到磁盘中,redis会fork一个子进程,这个子进程来进行持久化,会将数据写到一个临时文件,主进程不进行IO进行操作;优点就是:比AOF执行更加高效,恢复比较简单一次性操作完成;RDB最后一次持久化的数据可能丢失)
  2. Fork:fork的作用是复制一个与当前进程一样的进程;新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是一个全新的进程,并作为进程的子进程。
  3. RDB持久化的策略:
1)1分钟内修改了1万次
2)5分钟内修改了10万次
3)15分钟内修改了1次
优点:
  1. 适合大规模的数据恢复
  2. 对数据完整性和一致性要求不高
劣势:
  1. 2分钟这个时间段有可能丢失数据
  2. Fork比较消耗CPU、内存等资源
7.2AOF持久化 AOF:append only file 详细见:https://redisbook.readthedocs.io/en/latest/internal/aof.html
8redis事务处理 What:可以一次执行多个命令,本质是一组命令的集合。一个事务的所有命令都会序列化,按顺序地串行化执行执行而不会被其他命令插入,不许加塞。
How:一个队列中,一次性、顺序性、排他性的执行一系列命令行。
1.事务的命令展示:
基础知识|redis简介-安装部署-命令说明
文章图片

2.执行命令显示结果:
基础知识|redis简介-安装部署-命令说明
文章图片

    推荐阅读