Redis简单介绍

Redis数据库

1、简单介绍Redis

1.1、概念

​ redis是c语言开发的,是基于内存(数据存储到内存中)的以键值对存储的非关系型数据库。

1.2、redis的特点

  • redis将数据存储到内存当中, redis的读写效率非常高: 读 11万/s 写 8万/s

  • redis中提供了丰富的数据类型: 五种 String hash list set sortedSet

  • 注意: redis中数据类型指的是value的数据类型,而key只有String

  • redis支持快捷移植数据,

  • redis操作都是原子性的,用来保证数据的完整性

1.3、redis的数据类型的使用场景

  • String:

    • 特点: 和java中String是类似的, 表示字符串
    • get;set;mget;mset;setnx, getrange(截图字符串);strlen;incr ;decr;incrby;decryby
    • 使用场景: 做缓存 计数器 点赞
  • hash:

    • 特点: 和java中hashmap是类似的,
    • hset;hget;hkeys,hlen,hdel,hgetAll
    • 使用场景: 做缓存(一般可以被String所替代)
  • list:

    • 特点: 和 java中linkedList类似,看做一个队列(FIFO)
    • lpush,rpush,lrange,lpop,rpop,llen,lindex
    • 使用场景: 模拟队列 栈 朋友圈点赞
  • set:

    • 特点: 和java中set集合类型: 去重 无序
    • sadd,smembers,spop,srandmember,sismember
    • 使用场景: 去重操作 抽奖
  • sortedSet:

    • 特点: 去重 有序
    • zadd,zrange,zrevrange,zscore(查看元素的的分值),zrangebyscore,zrank,
    • 使用场景: 排序(排行榜)
  • Keys的命令:

    • del,exists,keys

2、Redis的安装

  • 下载

Windows的下载路径:

https://github.com/microsoftarchive/redis/releases

https://github.com/MicrosoftArchive/redis/tags

官网下载(针对Linux的版本):

https://redis.io/download

Redis端口:6379

  • 安装

具体安装步骤参考安装文档即可

https://www.runoob.com/redis/redis-install.html

3、使用Redis

3.1、打开redis

安装路径中双击redis-cli.exe

3.2、具体使用

可参考中文官网

http://redis.cn/

3.3、Redis的持久化机制

  • 默认情况下Redis的持久化机制是一直打开的

  • Redis在断电的时候,把所有的数据生成一个快照,并将其保存到本地磁盘中去,在下次启动的时候,会首先读取快照数据,并恢复到内存空间

4、在java代码中操作Redis数据库

4.1、Jedis:Redis 的客户端工具

​ jedis就是一款java连接redis的客户端工具, jedis中操作API与redis中命令是一样的,大大降低了学习成本,jedis也是redis官方推荐的一款java客户端工具

4.2、Jedis的使用

  • 首先需要导入依赖
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
  • 测试类

所有对Redis数据库的操作,和官网文档中提供的操作方式一致。

public class App {
    @Test
    public void test1() throws Exception{
        /*
            使用Jedis客户端工具连接数据库
            两个参数:主机地址,端口号
         */
        Jedis jedis = new Jedis("localhost",6379);
        jedis.set("mykey","myValue");
        System.out.println(jedis.get("mykey"));
        jedis.close();
    }
}

4.3、Jedis连接池

​ 在没次使用Redis时都需要建立连接用完之后释放资源,这样会浪费资源,所以可以设置Redis连连接池。

//工具类
public class JedisUtils {
    private static  JedisPool jedisPool;
    //静态代码块:
    static {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(20); // 最大的闲时连接
        config.setMinIdle(5); // 最小的闲时连接
        jedisPool = new JedisPool(config,"192.168.72.144",6379);
    }
    //获取连接
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

5、补充内容

5.1、数据爬取去重(Jedis通常使用场景)

​ 在上面爬取数据过程中,若需要按时爬取非重复信息可以使用Jedis中的set集合以达到去重的目的。

Long aaa = jedis.sadd(STORE_SPIDER_NEWS, newUrl);

5.2、按时自动爬取(xml)

  • 导入依赖
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>
  • applicationContext.xml配置文件
    <bean id="myTask" class="com.ujiuye.springtask.MyTask"/>
    <!--配置定时任务-->
    <task:scheduled-tasks>
        <!--一个定时任务-->
        <task:scheduled ref="myTask" method="execute" cron="*/2 * * * * ?"/>
    </task:scheduled-tasks>
  • java类
//测试方法
public class App {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        context.start();
    }
}
//执行方法
public class MyTask {
    public void execute(){
        System.out.println("方法执行了");
    }
}

5.3、按时自动爬取(注解)

  • 导入依赖
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>
  • applicationContext.xml配置文件
    <context:component-scan base-package="com.ujiuye"/>

    <task:annotation-driven/>
  • java类
//测试方法
public class App {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        context.start();
    }
}
//执行方法
@Component
public class MyTask {
    @Scheduled(cron = "*/1 * * * * ?")
    public void execute(){
        System.out.println("方法执行了");
    }
}

5.4、介绍cron表达式

(cron = “*/1 * * * * * *”)按顺序依次为(星期一般用"?",年一般不写)

  • 秒(0~59)

  • 分钟(0~59)

  • 小时(0~23)

  • 天(0~31)每个月的第几天

  • 月(0~11)每年的第几月

  • 星期(1~7 1为SUN-依次为SUN,MON,TUE,WED,THU,FRI,SAT)

  • 年份(1970-2099)

  • "?"表示不设置值,只能出现在每个月的第几天和每周的第几天,防止冲突,但是两者只能出现一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值