Redis
k-v结构数据库,数据存储在内存中
相比Mysql数据库,读写性能高
适合存储热点数据
-
windows启动redis
在redis文件路径中 输入 redis-server.exe redis.windows.conf 启动服务端 输入redis-cli.exe 进入命令行
Redis数据类型
字符串
哈希:类似Java中的HashMap
列表:类似Java中的LinkedList
集合:类似Java中的HashSet
有序集合:类似数据结构中的堆,优先队列
Redis常用命令
-
字符串
SET key value //设置k-v GET key //获取键值 SETEX key seconds value //设置指定的key值,并设置key的过期时间 SETNX key value //只有在key不存在时设置key的值
-
哈希
HSET key field value // 将哈希表中key的field设置为value HGET key field //获取存储在key中field字段 HDEL key field //删除存储在key中的字段 HKEYS key //获取哈希表中的所有字段 HVALS key //获取哈希表中的所有值
-
列表
LPUSH key value1 [value2] //将一个或多个值插入到列表头部 LRANGE key start stop //获取列表指定范围内的元素 RPOP key //移除并获取最后一个元素 LLEN key //获取列表长度
-
集合
SADD key m1 m2 //向集合中添加元素 SMEMBERS key //返回集合中的所有元素 SCARD key //获取集合中的成员数 SINTER key1 key2 //返回给定所有集合的交集 SUNION key1 key2 //返回所有给定集合的并集 SREM key m1 m2 //删除集合中的一个或多个元素
-
有序集合
ZADD key score1 member1 score2 member2 //向有序集合添加多个元素 ZRANGE key start stop [WITHSCORES] //通过索引区间返回有序集合中指点区间内的成员 ZINCRBY key increment member //有序集合中对指定成员的分数加上增量increment ZREM key member [member...] //移除有序集合中一个或多个元素
在Java中操作redis
-
导入maven坐标
-
配置redis数据源
redis: host: localhost port: 6379 password: 123456 database: 10
-
编写配置类,创建redisTemplate对象
@Configuration @Slf4j public class RedisConfiguration { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate redisTemplate = new RedisTemplate(); //设置redis的连接工厂对象 redisTemplate.setConnectionFactory(redisConnectionFactory); //设置redis的序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); return redisTemplate; } }
-
通过RedisTemplate对象操作Redis
字符串
redistemplate.opsforvalue().set("k","v"); //set redistemplate.opsforvalue().get('K'); //get redistemplate.opsforvalue().set('K',"v",2,TimeUnit.MINUTES); //设置过期时间 redistemplate.opsforvalue().setIfAbsent('K',"v"); //setnx
哈希
HashOperations hashOperations = redisTemplate.opsForHash(); hashOperations.put("100","name","xlee"); //hset hashOperations.get("100", "name"); //hget hashOperations.delete("100","name"); //hdel hashOperations.keys("100"); //keys hashOperations.values("100") //values
列表
redisTemplate.opsForList().leftPush("mylist","a"); //push redisTemplate.opsForList().range("mylist",0,-1); redisTemplate.opsForList().rightPop("mylist");
集合
redisTemplate.opsForSet().add("mySet","a","b","c","d"); redisTemplate.opsForSet().remove("mySet","a","b"); Set members = redisTemplate.opsForSet().members("mySet"); redisTemplate.opsForSet().intersect("mySet1","mySet2"); redisTemplate.opsForSet().union("mySet1","mySet2");
ZSET
redisTemplate.opsForZSet().add("myZSet","a",1); redisTemplate.opsForZSet().incrementScore("myZSet","f",10); redisTemplate.opsForZSet().remove("myZSet","f");