赞
踩
首先创建一个普通的maven工程
(1)引入依赖
- <dependencies>
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>3.8.0</version>
- </dependency>
- </dependencies>
(2)测试
- public class demo1 {
- public static void main(String[] args) {
- //String数据类型
- // redisString();
-
- //hash数据类型
- // redisHash();
-
- //List<列表>数据类型
- Jedis jedis = new Jedis("172.16.7.220",6379);
-
-
- }
-
- private static void redisHash() {
- Jedis jedis = new Jedis("172.16.7.220",6379);
- jedis.select(1);
- jedis.hset("k1","name","syf");
-
- HashMap<String,String> map = new HashMap<>();
- map.put("name","ljh");
- map.put("age","18");
- map.put("address","shanghai");
- Long k2 = jedis.hset("k2", map);//将哈希表 key 中的字段 field 的值设为 value hget key field: 获取存储在哈希表中指定字段的值。
- Map<String, String> all = jedis.hgetAll("k2");//获取在哈希表中指定 key 的所有字段和值
- Set<String> k21 = jedis.hkeys("k2");//获取所有哈希表中的字段
- Long k1 = jedis.hdel("k2","name");//删除一个或多个哈希表字段
- System.out.println(k1);
- }
-
- private static void redisString() {
- //把所有关于对redis的操作都封装到一个类中Jedis
- //Jedis jedis = new Jedis();//无参构造函数,默认连接的是本地的redis,而且端口6379
- Jedis jedis = new Jedis("172.16.7.220",6379);
- // System.out.println(jedis.ping());//测试连通性 pong则为连通
-
- //String类型的redis数据测试
- // String s = jedis.flushAll(); //清空当前redis库的数据
- // String select = jedis.select(0); //切换redis的数据库
- String set = jedis.set("k1", "v1"); //设置k1,v1
- String mset = jedis.mset("k1","v2","k2","v2","k4","4"); //设置多个k1,v1
- Long setnx = jedis.setnx("k1", "v1");//判断如果k1不存在的添加返回1,存在不添加返回0
- Set<String> keys = jedis.keys("*"); //获取所有的key
- String setex = jedis.setex("k3", 5L, "v3");//设置过期时间
- // Long del = jedis.del("k1", "k2");//删除key
- String k1 = jedis.get("k1");//获取k1的值
- Long k4 = jedis.incr("k4");//对指定的key的value值进行递增。key对应的value必须为整型字符串
- Long decr = jedis.decrBy("k4", 2L);//按照number值进行递增
- System.out.println(decr);
- jedis.close();
- }
- }

特点: Jedis把对redis的操作都封装到Jedis类对象中了,而每个命令封装了一个对应的方法。
连接池的作用: 减少频繁创建和销毁连接对象。
- public class demo2 {
- public static void main(String[] args) {
- //配置连接对象信息
- JedisPoolConfig poolConfig = new JedisPoolConfig();
- poolConfig.setMinIdle(5);//设置最小的空闲数
- poolConfig.setMaxIdle(10);//当没人连接redis服务器是,该池子最多能空闲几个连接对象
- poolConfig.setMaxTotal(15);//当有人连接redis服务时,最大能生成多少个连接对象
-
- //创建连接池对象
- JedisPool jedisPool = new JedisPool(poolConfig,"172.16.7.220",6379);
- long start = System.currentTimeMillis();
-
- //从连接池获取连接对象
- for (int i = 0; i < 1000; i++) {
- Jedis jedis = jedisPool.getResource();
- jedis.ping();
- jedis.close();
- }
- long end = System.currentTimeMillis();
- System.out.println(end-start);
- }
- }

- public class demo4 {
- public static void main(String[] args) {
- HostAndPort hostAndPort1=new HostAndPort("172.16.7.220",7001);
- HostAndPort hostAndPort2=new HostAndPort("172.16.7.220",7002);
- HostAndPort hostAndPort3=new HostAndPort("172.16.7.220",7003);
- HostAndPort hostAndPort4=new HostAndPort("172.16.7.220",7004);
- HostAndPort hostAndPort5=new HostAndPort("172.16.7.220",7005);
- HostAndPort hostAndPort6=new HostAndPort("172.16.7.220",7006);
- Set<HostAndPort> sets=new HashSet<>();
- sets.add(hostAndPort1);
- sets.add(hostAndPort2);
- sets.add(hostAndPort3);
- sets.add(hostAndPort4);
- sets.add(hostAndPort5);
- sets.add(hostAndPort6);
- JedisCluster jedisCluster=new JedisCluster(sets);
- jedisCluster.set("k1","v1");
- jedisCluster.set("k2","v2");
- jedisCluster.set("k3","v3");
- jedisCluster.set("k4","v4");
- jedisCluster.set("k5","v5");
- jedisCluster.set("k6","v6");
- jedisCluster.set("k7","v7");
-
- jedisCluster.close();
- }
- }

springboot对redis的操作封装到模板类中RedisTemplate和StringRedisTemplate。StringRedisTemplate是Redistemplate的子类,它只能往redis中存放字符串类型。
(1)创建一个Springboot工程
(2)引入依赖
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.3.12.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <groupId>com.aaa</groupId>
- <artifactId>redis-springboot-01</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>redis-springboot-01</name>
- <description>redis-springboot-01</description>
- <properties>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- </project>

(2)配置信息
-
- #redis的配置信息--单机
- spring.redis.host=192.168.223.147
- spring.redis.port=6379
(3)测试
- @SpringBootTest
- class RedisSpringboot01ApplicationTests {
-
- //springboot 创建好该类对象 并交于IOC容器管理
- @Autowired
- private StringRedisTemplate redisTemplate;
-
- @Test
- void contextLoads() {
- // Boolean k1 = redisTemplate.hasKey("k1");//判断k存不存在
- // System.out.println("判断k1是否存在:"+k1);
- // Boolean k2 = redisTemplate.delete("k2");//删除指定的k
- // System.out.println("k2是否删除成功:"+k2);
- // Set<String> keys = redisTemplate.keys("*");//得到所有的k
- // System.out.println(keys);
-
- //字符串的操作--redisTemplate类中对于每一种数据类型的操作,单独封装了响应的类
- ValueOperations<String, String> forValue = redisTemplate.opsForValue();
- // Integer append = forValue.append("k1", "v5");//追加字符串功能
- // forValue.set("k8","v8");//设置值
- // String k8 = forValue.get("k8");//获取k对应的value
- // Boolean absent = forValue.setIfAbsent("k9", "v9");//如果k不存在则添加,存在则返回false
- // Boolean k9 = forValue.setIfPresent("k9","v100");//如果k存在就覆盖,不存在就添加
- // HashMap<String, String> map = new HashMap<>();
- // map.put("k6","v6");
- // map.put("k7","v7");
- // map.put("k8","v8");
- // map.put("k9","v9");
- // forValue.multiSet(map);
- // ArrayList<String> list = new ArrayList<>();
- // list.add("k6");
- // list.add("k7");
- // list.add("k8");
- // list.add("k9");
- // List<String> strings = forValue.multiGet(list);
- // System.out.println(strings);
-
- //hash类型操作
- HashOperations<String, Object, Object> opsForHash = redisTemplate.opsForHash();
- Object o = opsForHash.get("k1", "name");//获取字段的值
- opsForHash.put("k3","name","yuhail");//存放数据
- Set<Object> set = opsForHash.keys("k2");//获取k的所有字段
- Map<Object, Object> k2 = opsForHash.entries("k2");//获取所有的字段和value值
- System.out.println(set);
- System.out.println(k2);
- HashMap<String, String> map = new HashMap<>();//批量添加hash数据
- map.put("name","asfd");
- map.put("addr","v7");
- map.put("age","v8");
- map.put("sex","v9");
- opsForHash.putAll("k4",map);
-
- }
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。