Redis数据库使用教程

1、Redis介绍

1.1 概念

redis是C语言开发的, redis基于内存的数据库(数据存储到了内存当中), redis中数据的存储是以KEY-VALUE的形式来存储,redis中也是有丰富的数据类型。分布式集群中,同样的缓存信息需要存储在不同的服务器上,造成资源浪费,读取效率慢;使用redis服务,将共同的缓存信息放在此服务器上

1.2 特点

  1. redis将数据存储到内存当中, redis的读写效率非常高: 读 11万/s 写 8万/s
  2. redis中提供了丰富的数据类型: 五种 String(字符串)、 hash(散列)、 list(列表)、 set(集合) 、sortedSet(有序集合)
  3. redis中数据类型指的是value的数据类型,而key只有String
  4. redis支持快捷移植数据
  5. redis操作都是原子性的,用来保证数据的完整性

1.3 五种数据类型使用场景

(1)String:
做缓存 计数器 点赞 分布式缓存
(2)hash:
做缓存(一般可以被String所替代)
(3)List
不去重,有序
模拟队列 栈 朋友圈点赞
(4)set:
•去重 无序
去重操作 抽奖
(5)sortedSet:
去重 有序
排序(排行榜)

2、Redis安装

Windows的下载路径:
https://github.com/microsoftarchive/redis/releases
Redis端口:6379
图形化操作工具:RedisDesktopManager

3、Redis使用

3.1 导入依赖jedis

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

3.2 获取jedis对象

方式一: 直接new,指定ip和端口:

Jedis jedis = new Jedis("127.0.0.1",6379);

方式二: 创建jedis连接池对象,池中获取对象,并抽取成工具类:


// jedis就是一款java连接redis的客户端工具,工具类返回一个redis对象
public class JedisUtil {

    private static JedisPool pool = null;

    static {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(10);
        config.setMaxTotal(50);
        config.setMinIdle(5);
        pool=  new JedisPool(config,"127.0.0.1",6379);
    }


    public static Jedis getJedis(){
        return pool.getResource();
    }
}

3.3 jedis对象操作五种数据类型

详细命令可参考官网:http://redis.cn/commands.html


public class RunRedis {

    //1、String类型
    @Test
    public void StringRun() throws Exception{
        /*获取对象,,手动或者工具类*/
        //Jedis jedis1 = new Jedis("127.0.0.1", 6379);
        Jedis jedis = new JedisUtil().getJedis();
        /*选择存入哪个数据库,默认为15个*/
        jedis.select(0);
        //赋值:
        jedis.set("age","50");
        //取值
        String age = jedis.get("age");
        System.out.println(age);
        // 想让age+1操作
        Long age1 = jedis.incr("age");
        System.out.println(age1);
        // 想让 age-1 操作
        Long age2 = jedis.decr("age");
        System.out.println(age2);

        // 需求: 想让age只存活5秒, 到时间后销毁即可
        jedis.expire("age",5);

        while(jedis.exists("age")){
            Long time = jedis.ttl("age");
            System.out.println(time);
            Thread.sleep(1000);
        }

        // 需求: 新创建name的时候, 为name添加有效时长为5秒
        jedis.setex("name",5,"葵花宝典");
        while(jedis.exists("name")){

            //返回值: -2  -1
            // -2: 表示的是当前key已经不存在
            //-1 : 表示当前key永久有效
            Long time = jedis.ttl("name");
            System.out.println(time);
            Thread.sleep(1000);
        }

        // 如何删除一个key (通用操作)
        jedis.del("name");

    }

    //2、Hash类型(了解)

    //3、List类型
    @Test
    public void ListRun() throws Exception{
        /*获取对象*/
        Jedis jedis = new JedisUtil().getJedis();
        // 从左侧添加元素, 从右侧弹出元素
        // 注意: 不要出现从左侧添加, 从左侧弹出
        jedis.lpush("list1","a","b","c","d");
        // 遍历list集合
        List<String> list = jedis.lrange("list1", 0, -1);
        System.out.println(list);

        //从队列右边移出第一个元素
        /*String rpop = jedis.rpop("list1");
        System.out.println(rpop);*/

        // 获取列表的个数
        Long len = jedis.llen("list1");
        System.out.println(len);
    }
    //4、Set类型   去重,无序
    @Test
    public void SetRun() throws Exception{
        /*获取对象*/
        Jedis jedis = new JedisUtil().getJedis();
        // 添加数据
        jedis.sadd("set1","q","w","e","r","e");
        //2.2 获取set集合所有的元素
        Set<String> set = jedis.smembers("set1");
        System.out.println(set);

        // 判断中 w是否存在
        Boolean flag = jedis.sismember("set1", "w");
        System.out.println(flag);

        //获取set集合中数量
        Long len = jedis.scard("set1");
        System.out.println(len);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值