Redis
Redis 入门
- Redis 在windows环境中启动服务器命令(在Redis文件夹中启动命令行窗口):
1 | redis-server.exe redis.windows.conf |
- Redis 在windows环境启动客服端命令(在Redis文件夹中启动命令行窗口):
1 | redis-cli.exe -h localhost -p 6379 -a 123456 |
-h 后面跟服务器IP地址
-p 后面跟端口号
-a 后面跟密码
常用数据类型
Redis 存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型
字符串 String:普通字符串,Redis中最简单的数据类型
哈希 hash:散列,类似于Java中的HashMap结构
列表 list概念:按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
集合 set:无序集合,没有重复元素,类似于Java中的HashSet
有序集合 sorted set / zset:集合中每一个元素关联一个分数,根据分数升序排序,没有重复元素
常用命令
字符串操作命令
- SET key value:设置指定key的值
- GET key:获取指定key的值
- SETEX key seconds value:设置指定key的值,并将key的过期时间设为seconds秒
- SETNX key value:只有在key不存在时设置key的值
哈希操作命令
- HSET key field value:将哈希表 key 中的字段 field 的值设为 value
- HGET key field:获取存储在哈希表中指定字段的值
- HDEL key field:删除存储再哈希表中的指定字段
- HKEYS key:获取哈希表中所有字段
- HVALS key:获取哈希表中所有值
列表操作命令
- LPUSH key value1 [value2]:将一个或多个值插入到列表头部
- LRANGE key start stop:获取列表指定范围内的元素(左右下标元素都包含)
- RPOP key:移除并获取列表最后一个元素
- LLEN key:获取列表长度
集合操作命令
- SADD key member1 [member2]:向集合添加一个或多个成员
- SMEMBERS key:返回集合中的所有成员
- SCARD key:获取集合的成员数
- SINTER key1 [key2]:返回给定所有集合的交集
- SUNION key1 [key2]:返回所有给定集合的并集
- SREM key member1 [member2]:删除集合中一个或多个成员
有序集合操作命令
Redis有序集合是String类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数
- ZADD key score1 member1 [score2 member2]:向有序集合添加一个或多个成员
- ZRANGE key start stop [WITHSCORES]:通过索引区间返回有序集合中指定区间内的成员
- ZINCRBY key increment member:有序集合中对指定成员的分数加上增量 increment
- ZREM key member [member …]:移除有序集合中的一个或多个成员
通用命令
下列命令部分数据类型,都可以使用:
- KEYS pattern:查找所有复合给定模式(pattern)的key
- EXISTS key:检查给定key是否存在
- TYPE key:返回key所存储的值的类型
- DEL key:该命令用于在key存在是删除key
在Java中操作Redis
Redis 的 Java 客户端
- Jedis
- Lettuce
- Spring Data Redis
Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用 Spring Data Redis 来简化操作
Spring Data Redis 使用方式
步骤:
- 导入Spring Data Redis的Maven坐标
1 | <dependency> |
- 配置Redis数据源
1 | spring: |
- 编写配置类,创建RedisTemplate对象
1 | package com.sky.config; |
- 通过RedisTemplate对象操作Redis
1 | package com.sky; |
Spring Cache
- 概念:Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
- Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:
- EHCache
- Caffeine
- Redis
- 相关信息:
- 导入Maven依赖配置
1 | <dependency> |
- 常用注解(后三个注解一般用在控制层方法上)
| 说明 | 注解 |
|---|---|
| 开启缓存注解功能,通常加在启动类上 | @EnableCaching |
| 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 | @Cacheable |
| 将方法的返回值放到缓存中 | @CachePut |
| 将一条或多条数据从缓荏中删除 | @CacheEvict**** |
- @CachePut(cacheNames = “userCahe” , key = “#user.id”) // 使用Spring Cache缓存数据,key的生成为:userCache::1
#user.id 是SrpingEL语言,其中user是方法中的参数,id则是该对象的id属性,生成的key中后面的1就是其对应的值
- @Cacheable(cacheNames = “userCahe” , key = “#id”) // 使用Spring Cache缓存数据,key的生成为:userCache::1
#user.id 是SrpingEL语言,其中id是方法中的参数,生成的key中后面的1就是其对应的值
- @CacheEvict(cacheName = “userCache”, key = “#id”) // 使用Spring Cache缓存数据,key的生成为:userCache::1
- @CacheEvict(cacheName = “userCache”, allEntries = true) 该注解则是删除所有以userCache开头的key
此文章版权归霜屿清所有,如有转载,请注明来自原作者
