springboot2集成redis

参考代码  https://github.com/zhang-xiaoxiang/redisdemo

首先熟悉一下redis的基本命令(来自网络收集)

1-String 字符串类型的增删改查:

###增加一个值key为name,value为ay
127.0.0.1:6379> set name 'ay'
OK
###查询name的值
127.0.0.1:6379> get name
"ay"
###更新name的值为al
127.0.0.1:6379> set name 'al'
OK
###查询name的值
127.0.0.1:6379> get name
"al"
###删除name的值
127.0.0.1:6379> del name
(integer) 1
###查询是否存在name,0代表不存在
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379>

2-List集合的增删改查: 

List集合的增删改查:
###添加key为user_list,value为’ay’,’al’的list集合
127.0.0.1:6379> lpush user_list 'ay' 'al'
(integer) 2
###查询key为user_list的集合
127.0.0.1:6379> lrange user_list 0 -1
1) "al"
2) "ay"
###往list尾部添加love元素
127.0.0.1:6379> rpush user_list 'love'
(integer) 3
###往list头部添加hope元素
127.0.0.1:6379> lpush user_list 'hope'
(integer) 4
###查询key为user_list的集合
127.0.0.1:6379> lrange user_list 0 -1
1) "hope"
2) "al"
3) "ay"
4) "love"
###更新index为0的值
127.0.0.1:6379> lset user_list 0 'wish'
OK
###查询key为user_list的集合
127.0.0.1:6379> lrange user_list 0 -1
1) "wish"
2) "al"
3) "ay"
4) "love"
###删除index为0的值
127.0.0.1:6379> lrem user_list 0 'wish'
(integer) 1
###查询key为user_list的集合
127.0.0.1:6379> lrange user_list 0 -1
1) "al"
2) "ay"
3) "love"
127.0.0.1:6379>

 

3-Set集合的增删改查:

###添加key为user_set,value为"ay" "al"  "love"的集合
127.0.0.1:6379> sadd user_set "ay" "al"  "love"
(integer) 3
###查询key为user_set集合
127.0.0.1:6379> smembers user_set
1) "al"
2) "ay"
3) "love"
###删除value为love,返回1表示删除成功,0表示失败
127.0.0.1:6379> srem user_set 'love'
(integer) 1
###查询set集合所有值
127.0.0.1:6379> smembers user_set
1) "al"
2) "ay"
###添加love元素,set集合是没有顺序的,所以无法判断添加到那个位置
127.0.0.1:6379> sadd user_set 'love'
(integer) 1
###查询set集合所有值,发现添加到第二个位置
127.0.0.1:6379> smembers user_set
1) "al"
2) "love"
3) "ay"
###添加love元素,由于set集合已经存在,返回0代表添加不成功,但是不会报错
127.0.0.1:6379> sadd user_set 'love'
(integer) 0

 3-Hash集合的增删改查:

###清除数据库
127.0.0.1:6379> flushdb
OK
###创建hash,key为user_hset,字段为user1,值为ay
127.0.0.1:6379> hset user_hset "user1"  "ay"
(integer) 1
###往key为user_hset添加字段为user2,值为al
127.0.0.1:6379> hset user_hset "user2"  "al"
(integer) 1
###查询user_hset字段长度
127.0.0.1:6379> hlen user_hset
(integer) 2
###查询user_hset所有字段
127.0.0.1:6379> hkeys user_hset
1) "user1"
2) "user2"
###查询user_hset所有值
127.0.0.1:6379> hvals user_hset
1) "ay"
2) "al"
###查询字段user1的值
127.0.0.1:6379> hget user_hset "user1"
"ay"
###获取key为user_hset所有的字段和值
127.0.0.1:6379> hgetall user_hset
1) "user1"
2) "ay"
3) "user2"
4) "al"
###更新字段user1的值为new_ay
127.0.0.1:6379> hset user_hset "user1" "new_ay"
(integer) 0
###更新字段user2的值为new_al
127.0.0.1:6379> hset user_hset "user2" "new_al"
(integer) 0
###获取key为user_hset所有的字段和值
127.0.0.1:6379> hgetall user_hset
1) "user1"
2) "new_ay"
3) "user2"
4) "new_al"
###删除字段user1和值
127.0.0.1:6379> hdel user_hset user1
(integer) 1
###获取key为user_hset所有的字段和值
127.0.0.1:6379> hgetall user_hset
1) "user2"
2) "new_al"
127.0.0.1:6379>

4-SortedSet集合的增删改查

###清除数据库
127.0.0.1:6379> flushdb
OK
###SortedSet集合添加ay元素,分数为1
127.0.0.1:6379> zadd user_zset  1 "ay"
(integer) 1
###SortedSet集合添加al元素,分数为2
127.0.0.1:6379> zadd user_zset  2 "al"
(integer) 1
###SortedSet集合添加love元素,分数为3
127.0.0.1:6379> zadd user_zset  3 "love"
(integer) 1
###按照分数由小到大查询user_zset集合元素
127.0.0.1:6379> zrange user_zset 0 -1
1) "ay"
2) "al"
3) "love"
###按照分数由大到小查询user_zset集合元素
127.0.0.1:6379> zrevrange user_zset 0 -1
1) "love"
2) "al"
3) "ay"
###查询元素ay的分数值
127.0.0.1:6379> zscore user_zset "ay"
"1"
###查询元素love的分数值
127.0.0.1:6379> zscore user_zset "love"
"3"

springboot2集成redis

首先添加依赖

    <!--缓存redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

然后进行缓存配置(最基本配置,入门测试而已,哈哈)

### redis缓存配置
### 默认redis数据库为db0
spring.redis.database=0
### 服务器地址,默认为localhost
spring.redis.host=localhost
### 链接端口,默认为6379
spring.redis.port=6379
### redis密码默认为空
spring.redis.password=

 先解决使用RedisTemplate存储至缓存数据乱码(redis客户端显示16进制的key和value或者干脆乱码),在一个包里写上这个配置类(相当于xml配置一个bean,spirngboot推荐的配置方式是java代码配置方式) 

其实乱码问题也可以不用管它,因为它是序列化的结果,毕竟要在网络传输,但是为了直观,所以可以采取方式使得可读性增强,一般把key转为可读性强的,而value一般不需要(以免从redis读取时反而报String类型不能转换为对象的尴尬),一句话概括,乱码就乱码.

//package com.demo.redis.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * RedisConfig
 * 配置序列化,解决客户端的16进制存储问题---配置序列化策略
 * @author 10905 2019/2/24
 * @version 1.0
 */
@Configuration
public class RedisConfig {
    @Autowired
    private RedisTemplate redisTemplate;

    @Bean
    public RedisTemplate<String, Object> stringSerializerRedisTemplate() {
        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        return redisTemplate;
    }
}

 在再测试类写一个类测试一下(测试一个string内息,意思意思一下)

//package com.demo.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTests {
     /**
     * 基本类型的模板
     */
    @Resource
    private RedisTemplate redisTemplate;
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 测试基本连接redis读取字符串数据  新增和查询
     */
    @Test
    public void test01() {
        //增加
        redisTemplate.opsForValue().set("name", "张晓祥");
        redisTemplate.opsForValue().set("age", "18");
        //增加(会覆盖前面的键值对)
        redisTemplate.opsForValue().set("name", "张晓祥2号");
        redisTemplate.opsForValue().set("age", "19");
        //查询
        String name = (String) redisTemplate.opsForValue().get("name");
        String age = (String) redisTemplate.opsForValue().get("age");
        System.out.println("查询到缓存数据: " + name + "  " + age);
    }

    /**
     * 删除
     */
    @Test
    public void test02() {

        //删除键
        Boolean flag = redisTemplate.delete("age");
        if (flag) {
            System.out.println("删除age成功");
        } else {
            System.out.println("删除age失败!");
        }

    }

    /**
     * 修改
     */
    @Test
    public void test03() {
        //修改键
        redisTemplate.opsForValue().set("name", "长草颜团子");
        System.out.println("修改后的name是: " + redisTemplate.opsForValue().get("name"));
    }

}

 其他RedisTemplate中定义了对5种数据结构操作

redisTemplate.opsForList();//操作list
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForCluster();//集群时使用
redisTemplate.opsForGeo();//地理位置时使用
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值