Redis

  1. redis
    1.1 redis的概念
    ​ redis是C语言开发的, redis基于内存的数据库(数据存储到了内存当中), redis中数据的存储是以KEY-VALUE的形式来存储,redis中也是有丰富的数据类型
    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;getrange;strlen;incr ;decr;incrby;decryby
    •使用场景: 做缓存 计数器 点赞
    •hash:
    •特点: 和java中hashmap是类似的,
    •hset;hget;hkeys,hlen,hdel
    •使用场景: 做缓存(一般可以被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
    1.4 redis的安装
    Windows的下载路径:
    https://github.com/microsoftarchive/redis/releases
    Redis端口:6379

​ 参考安装文档即可
1.5 redis 的客户端工具: jedis
​ jedis就是一款java连接redis的客户端工具, jedis中操作API与redis中命令是一样的,大大降低了学习成本,jedis也是redis官方推荐的一款java客户端工具
•如果想jedis, 就需要先进行导包:

redis.clients
jedis
2.9.0

•基本入门程序:
// 演示jedis的入门程序
@Test
public void indexJedis(){
//1. 创建一个jedis对象
// jedis理解为 connection
Jedis jedis = new Jedis(“192.168.72.144”,6379);

    //2. 测试是否连通
    String pong = jedis.ping();
    System.out.println(pong);

    jedis.close();
}

1.5.1 jedis操作redis -->String
//使用jedis操作redis–>String
@Test
public void jedisForString() throws InterruptedException {
//1. 创建一个jedis对象
// jedis理解为 connection
Jedis jedis = new Jedis(“192.168.72.144”, 6379);

    //2. 执行相关的操作:String
    //2.1 赋值:
    jedis.set("age","50");
    //2.2 取值
    String age = jedis.get("age");
    System.out.println(age);

    //2.3 想让age+1操作
    Long age1 = jedis.incr("age");
    System.out.println(age1);
    //2.4 想让 age-1 操作
    Long age2 = jedis.decr("age");
    System.out.println(age2);

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

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

    //2.6 需求: 新创建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);
    }

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

}

1.5.2 jedis操作redis --> list
//使用jedis操作redis – >list
@Test
public void jedisForList() throws InterruptedException {
//1. 创建一个jedis对象
// jedis理解为 connection
Jedis jedis = new Jedis(“192.168.72.144”, 6379);
jedis.del(“list1”);
//2. 相关操作: list
//2.1 从左侧添加元素, 从右侧弹出元素
// 注意: 不要出现从左侧添加, 从左侧弹出
jedis.lpush(“list1”,“a”,“b”,“c”,“d”);
String rpop = jedis.rpop(“list1”);
System.out.println(rpop);

    //2.2 遍历list集合
    List<String> list = jedis.lrange("list1", 0, -1);
    System.out.println(list);

    //2.3 获取列表的个数
    Long len = jedis.llen("list1");
    System.out.println(len);

    //2.4 需求: 从右侧弹出一个元素, 将弹出在从左侧添加回去
    jedis.rpoplpush("list1","list1");

    //2.2 遍历list集合
    list = jedis.lrange("list1", 0, -1);
    System.out.println(list);
}

1.5.3 jedis操作redis --> set
//jedis操作redis–>set
@Test
public void jedisForSet() throws InterruptedException {
//1. 创建一个jedis对象
// jedis理解为 connection
Jedis jedis = new Jedis(“192.168.72.144”, 6379);

    //2. 相关操作: set
    //2.1 添加数据
    jedis.sadd("set1","q","w","e","r","e");
    //2.2 获取set集合所有的元素
    Set<String> set = jedis.smembers("set1");
    System.out.println(set);

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

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

}

1.6 jedis中连接池
•基本使用
@Test
public void jedisPoolTest(){
//1. 创建连接池对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(20); // 最大的闲时连接
config.setMinIdle(5); // 最小的闲时连接
JedisPool jedisPool = new JedisPool(config,“192.168.72.144”,6379);

    //2. 获取连接
    Jedis jedis = jedisPool.getResource();

    //3. 测试
    System.out.println(jedis.ping());

    //4. 关闭:使用连接池的时候一定要关闭
    jedis.close();

}

•抽取工具类:
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();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值