• 使用Java操作Redis


    方法一:

    首先创建一个maven工程,然后倒入下面的pom

    1. <dependencies>
    2. <dependency>
    3. <groupId>junitgroupId>
    4. <artifactId>junitartifactId>
    5. <version>4.12version>
    6. dependency>
    7. <dependency>
    8. <groupId>redis.clientsgroupId>
    9. <artifactId>jedisartifactId>
    10. <version>2.8.0version>
    11. dependency>
    12. dependencies>

    然后写一个测试类

    测试方法分为 3步和jdbc差不多

    1、获取连接,new一个Jedis对象

    2、执行操作,大致和操作命令差不多

    3、关闭连接

    1. @Test
    2. public void testReids(){
    3. //1 获取连接
    4. Jedis jedis = new Jedis("localhost", 6379);
    5. //2 执行具体操作
    6. jedis.set("username","xiaoming");
    7. String s = jedis.get("username");
    8. System.out.println(s);
    9. jedis.del("username");
    10. jedis.hset("myhash","addr","beijing");
    11. String hget = jedis.hget("myhash", "addr");
    12. System.out.println(hget);
    13. Set keys = jedis.keys("*");
    14. Map myhash = jedis.hgetAll("myhash");
    15. for (String key : keys){
    16. if ("myhash".equals(key))
    17. System.out.println("------"+key);
    18. }
    19. //3 关闭连接
    20. jedis.close();
    21. }

    方法二:

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <parent>
    6. <groupId>org.springframework.bootgroupId>
    7. <artifactId>spring-boot-starter-parentartifactId>
    8. <version>2.4.5version>
    9. <relativePath/>
    10. parent>
    11. <groupId>com.itheimagroupId>
    12. <artifactId>springdataredis_demoartifactId>
    13. <version>1.0-SNAPSHOTversion>
    14. <properties>
    15. <java.version>1.8java.version>
    16. properties>
    17. <dependencies>
    18. <dependency>
    19. <groupId>org.springframework.bootgroupId>
    20. <artifactId>spring-boot-starter-testartifactId>
    21. <scope>testscope>
    22. dependency>
    23. <dependency>
    24. <groupId>junitgroupId>
    25. <artifactId>junitartifactId>
    26. dependency>
    27. <dependency>
    28. <groupId>org.springframework.bootgroupId>
    29. <artifactId>spring-boot-starter-data-redisartifactId>
    30. dependency>
    31. dependencies>
    32. <build>
    33. <plugins>
    34. <plugin>
    35. <groupId>org.springframework.bootgroupId>
    36. <artifactId>spring-boot-maven-pluginartifactId>
    37. <version>2.4.5version>
    38. plugin>
    39. plugins>
    40. build>
    41. project>

    首先创建一个RedisTemplate对象

    1. @Autowired
    2. private RedisTemplate redisTemplate;

    Spring Data Redis中提供了一个高度封装的类:RedisTemplate,针对 Jedis 客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

    • ValueOperations:简单K-V操作

    • SetOperations:set类型数据操作

    • ZSetOperations:zset类型数据操作

    • HashOperations:针对hash类型的数据操作

    • ListOperations:针对list类型的数据操作

    1、操作String类型数据

    1. /**
    2. * 操作String类型数据
    3. */
    4. @Test
    5. public void testString(){
    6. redisTemplate.opsForValue().set("city132","beijing");
    7. String value = (String) redisTemplate.opsForValue().get("city132");
    8. System.out.println(value);
    9. System.out.println(redisTemplate.delete("city132"));
    10. System.out.println(redisTemplate.delete("city12345"));
    11. redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);
    12. Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
    13. System.out.println(aBoolean);
    14. }

    2、操作Hash类型数据

    1. /**
    2. * 操作Hash类型数据
    3. */
    4. @Test
    5. public void testHash(){
    6. HashOperations hashOperations = redisTemplate.opsForHash();
    7. //存值
    8. hashOperations.put("002","name","xiaoming");
    9. hashOperations.put("002","age","20");
    10. hashOperations.put("002","address","bj");
    11. //取值
    12. String age = (String) hashOperations.get("002", "age");
    13. System.out.println(age);
    14. //获得hash结构中的所有字段
    15. Set keys = hashOperations.keys("002");
    16. for (Object key : keys) {
    17. System.out.println(key);
    18. }
    19. //获得hash结构中的所有值
    20. List values = hashOperations.values("002");
    21. for (Object value : values) {
    22. System.out.println(value);
    23. }
    24. }

    3、操作List类型的数据

    1. /**
    2. * 操作List类型的数据
    3. */
    4. @Test
    5. public void testList(){
    6. ListOperations listOperations = redisTemplate.opsForList();
    7. //存值
    8. listOperations.leftPush("mylist","a");
    9. listOperations.leftPushAll("mylist","b","c","d");
    10. //取值
    11. List mylist = listOperations.range("mylist", 0, -1);
    12. for (String value : mylist) {
    13. System.out.println(value);
    14. }
    15. //获得列表长度 llen
    16. Long size = listOperations.size("mylist");
    17. int lSize = size.intValue();
    18. for (int i = 0; i < lSize; i++) {
    19. //出队列
    20. String element = (String) listOperations.rightPop("mylist");
    21. System.out.println(element);
    22. }
    23. }

    4、操作Set类型的数据

    1. /**
    2. * 操作Set类型的数据
    3. */
    4. @Test
    5. public void testSet(){
    6. SetOperations setOperations = redisTemplate.opsForSet();
    7. //存值
    8. setOperations.add("myset","a","b","c","a");
    9. //取值
    10. Set myset = setOperations.members("myset");
    11. for (String o : myset) {
    12. System.out.println(o);
    13. }
    14. //删除成员
    15. setOperations.remove("myset","a","b");
    16. //取值
    17. myset = setOperations.members("myset");
    18. for (String o : myset) {
    19. System.out.println(o);
    20. }
    21. }

    5、操作ZSet类型的数据

    1. /**
    2. * 操作ZSet类型的数据
    3. */
    4. @Test
    5. public void testZset(){
    6. ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    7. //存值
    8. zSetOperations.add("myZset","a",10.0);
    9. zSetOperations.add("myZset","b",11.0);
    10. zSetOperations.add("myZset","c",12.0);
    11. zSetOperations.add("myZset","a",13.0);
    12. //取值
    13. Set myZset = zSetOperations.range("myZset", 0, -1);
    14. for (String s : myZset) {
    15. System.out.println(s);
    16. }
    17. //修改分数
    18. zSetOperations.incrementScore("myZset","b",20.0);
    19. //取值
    20. myZset = zSetOperations.range("myZset", 0, -1);
    21. for (String s : myZset) {
    22. System.out.println(s);
    23. }
    24. //删除成员
    25. zSetOperations.remove("myZset","a","b");
    26. //取值
    27. myZset = zSetOperations.range("myZset", 0, -1);
    28. for (String s : myZset) {
    29. System.out.println(s);
    30. }
    31. }

    6、通用操作,针对不同的数据类型都可以操作

    1. /**
    2. * 通用操作,针对不同的数据类型都可以操作
    3. */
    4. @Test
    5. public void testCommon(){
    6. //获取Redis中所有的key
    7. Set keys = redisTemplate.keys("*");
    8. for (String key : keys) {
    9. System.out.println(key);
    10. }
    11. //判断某个key是否存在
    12. Boolean itcast = redisTemplate.hasKey("itcast");
    13. System.out.println(itcast);
    14. //删除指定key
    15. redisTemplate.delete("myZset");
    16. //获取指定key对应的value的数据类型
    17. DataType dataType = redisTemplate.type("myset");
    18. System.out.println(dataType.name());
    19. }
  • 相关阅读:
    【Spring从入门到实战】第 2 讲:什么是Spring和IOC?
    DataEase 介绍、使用技巧
    麒麟系统开发笔记(六):安装QtCreator开发IDE中的中文输入环境Fcitx输入法
    Docker知识总结 (四) 数据卷
    开源游戏服务器框架NoahGameFrame(NF)客户端的Log日志系统(五)
    C++左值右值完美转发转移
    【C#】转换8位或16位像素值为Bitmap
    还原回收站的文件需要管理员权限怎么办
    信号继电器驱动芯片(led驱动芯片)
    git各个项目的忽略文件写法
  • 原文地址:https://blog.csdn.net/weixin_45915206/article/details/126238966