Невозможно получить данные в SpringBoot с помощью класса RedisTemplate - PullRequest
0 голосов
/ 27 декабря 2018

Модель выглядит следующим образом: -

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

public class User {

    private static final long serialVersionUID = 7156526077883281L;

    @Id
    @SequenceGenerator(name = "SEQ_GEN", sequenceName = "SEQ_USER", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
    private long id;
    private String name;
    private long followers;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getFollowers() {
        return followers;
    }

    public void setFollowers(long followers) {
        this.followers = followers;
    }

    public User(String name, long followers) {

        this.name = name;
        this.followers = followers;
    }

    @Override
    public String toString() {
        return String.format("User{id=%d, name='%s', followers=%d}", id, name, followers);
    }
}

DAO выглядит следующим образом: -

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class UserDAO {
    private static final String KEY = "userKey";

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void addFollower(String uname) {
        redisTemplate.opsForList().leftPush(KEY, uname);
    }
    /*public void updateFollower(String followername) {
        redisTemplate.opsForValue().set(KEY, followername);
    }*/
   public String getFollowers() {
        return redisTemplate.opsForValue().get(KEY);
    }
    public void removeFollower(String uname) {
        redisTemplate.opsForList().leftPop(KEY);

    }
    public void deleteUser() {
        redisTemplate.delete(KEY);
    }
}

Класс SpringBoot Application выглядит следующим образом: -

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private UserDAO userDAO;
    Logger logger=LoggerFactory.getLogger("Logger");

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        User user =new User("Rita Ora",30);

        userDAO.addFollower("katy Perry");
        userDAO.addFollower("Swift");
        userDAO.addFollower("Bebe Rexha");

        userDAO.removeFollower("Swift");

        logger.info("Info",userDAO.getFollowers());
    }

}

Я использую структуру данных списка в клиенте REDIS для получения данных.Я получаю следующую ошибку: -

org.springframework.dao.InvalidDataAccessApiUsageException: WRONGTYPE Операция с ключом, содержащим неправильный тип значения;вложенным исключением является redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Операция с ключом, содержащим неправильный тип значения в org.springframework.data.redis.connection.jedis.JedisExceptionC

...