redis安装 linux安装 官网 安装 访问虚拟机6379设置
修改配置文件 redis.conf
bind 127.0.0.1 注释掉
protected-mode no 关闭保护模式
重新启动
src中输入
1 ./redis-server ../redis.conf
常用命令行 进入数据操作
清除redis
String 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 存入 SET key value # 例 set str 1 # 获取 GET key # 例 get str # 截取字符串获取 GETRANGE key start end # 例 GETRANGE str 0 -1 # 例 GETRANGE str 0 1 # 字符串替换 SETRANGE key offset value # 例 SETRANGE str 1 aa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 增加1 INCR key # 例 INCR str # 减少1 DECR key # 例 DECR str # 自定义增长 INCRBY key increment # 例 INCRBY str 2 # 自定义减少 DECRBY key increment # 例 DECRBY str 2
list 1 2 3 4 5 # 存入 LPUSH key value # 例 LPUSH list str1 # 例 LPUSH list str2 # 例 LPUSH list str3
1 2 3 4 5 6 7 8 9 10 11 12 # 查看listchangdu LLEN key # 例 LLEN list # 查看 LRANGE key sart stop # 例查所有 LRANGE list 0 -1 # 例查一部分 LRANGE list 0 1 # 根据下标查看 LINDEX key index # 例 LINDEX list 0
1 2 3 4 5 6 7 8 9 10 11 12 # 移除最左边 LPOP key # 例 LPOP list # 移除最右边 RPOP key # 例 RPOP list # 移除指定值 # value值可重复,count是移除几个 LREM key count value # 例 LREM list 1 str1
1 2 3 # 截取list LTRIM key start stop # 例 LTRIM list 1 2
1 2 3 # 替换 LSET key index value # 例 LSET list 0 str1
1 2 3 4 5 # 插入 LINSERT key BEFORE|AFTER pivot value # 例 # LINSERT list BEFORE str1 str0.1 # LINSERT list AFTER str2 str2.1
Hash 与字符串相似,只不过value是键值对
1 2 3 4 5 6 7 8 9 # 存入 HSET key field value # 例 HSET hash key value HMSET key field value # 例 HSET hash key1 value key2 value # 获取 HGET key field # 例 HGET hash key
set Zset springboot整合redis 依赖 1 2 3 4 5 <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-data-redis</artifactId > <version > 2.1.5.RELEASE</version > </dependency >
config 序列化 RedisTemplate默认的所有序列化规则都是JDKSerializer,而StringRedisTemplate默认的序列化规则是StringRedisSerializer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Configuration public class RedisConfig { @Bean public RedisTemplate<Object, Object> redisTemplate (RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate <Object, Object>(); redisTemplate.setConnectionFactory(connectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer (Object.class); ObjectMapper objectMapper = new ObjectMapper (); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer ()); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
yaml配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 spring: redis: database: 0 host: 192.168 .255 .129 post: 6379 password: timeout: 5000 jedis: pool: max-idle: 8 min-idle: 0 max-active: 8
存取数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @Autowired private RedisTemplate redisTemplate;redisTemplate.opsForValue().set("str" ,"这是存字符串" ); redisTemplate.opsForValue().get("str" ).toString(); redisTemplate.opsForHash().put("hash" ,"key" ,"这是hash中map的value值" ); redisTemplate.opsForHash().get("hash" ,"key" ).toString();
注:
Redis与数据库关系
1.Redis可以做为数据库,但由于都是存在内存中,当Redis中数据越来越大,启动时都会全部放在内存中,会导致内存不够的情况,所以一般不作为数据库
2.Redis与数据库结合,做数据操作时,首先看Redis中是否存在数据,存在则对Redis中的数据进行操作,不存在则去数据库中取数据到Redis中进行数据操作,Redis会周期性的与数据库中的数据进行同步
目前有两种连接池 Jedis和Lettuce