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  –h  IP地址 –P 端口

2.2后端安装部署redis

vim redis.conf 修改daemonize no 改成 daemonize yes如下图所示:

 

执行:./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简介-安装部署-命令说明_第1张图片

 5常用命令

5.1赋值操作

 如果赋予项目的KEY,新的value会覆盖旧的value值

5.2取值

5.3删除

 redis简介-安装部署-命令说明_第2张图片

5.4getset操作

5.5lncr key 

计数器的使用:incr和decr只能对数值进行操作(递增和递减)

redis简介-安装部署-命令说明_第3张图片

 5.6Decr

redis简介-安装部署-命令说明_第4张图片

 5.7Incrby

redis简介-安装部署-命令说明_第5张图片

 5.8decrby

redis简介-安装部署-命令说明_第6张图片

 5.9string使用环境

主要用户保存JSON格式的字符串

5.10Hash命令

Hash----------{username:“张三”,age:14}

 redis简介-安装部署-命令说明_第7张图片

 5.11增加数字

redis简介-安装部署-命令说明_第8张图片

 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简介-安装部署-命令说明_第9张图片

 2.执行命令显示结果:

redis简介-安装部署-命令说明_第10张图片

你可能感兴趣的:(基础知识,云计算—PAAS)