赞
踩
目录
key:String,value常用5种:String,hash,list,set,sorted set
List: 可用于存储任务队列 ,先进先出(lpush,rpop:左进右出)
Sorted Set: 有序集合(score小到大 )编辑
启动:在/redis-4.0.0/src目录下,使用./redis-server 启动服务,默认端口号:6379,可在配置中修改
修改配置信息:在/redis-4.0.0目录下修改./redis.conf
修改后,查找redis进程,关闭重新开启
停止:Ctl+C
Windows:
Redis存储的是key-value结构的数据,其中key是字符串,value有5中常用类型:
set key seconds value :可用于设置有时间限制的验证码
字段;field 值;value
lrange mylist 0 -1: 表示mylist列表的开始到结尾的所有元素
select 编号 :选择对应编号的数据库
pom.xml文件添加依赖 导包
先开启Redis的本地服务,在测试,否则无法连接
1.在pom/xml文件中添加依赖:
2. application.yml中设置Redis相关配置:
3. 进行Redis测试,在RedisTemplate没有显示赋值时,Spring框架会根据Redis设置自动装配
3.1 创建Redis匹配类:避免key序列化改变原来key值不利于取值,value也会序列化 在获取时会反序列化
- /**
- * Redis配置类
- */
-
- @Configuration
- public class RedisConfig extends CachingConfigurerSupport {
-
- @Bean
- public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
-
- RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
-
- //默认的Key序列化器为:JdkSerializationRedisSerializer
- redisTemplate.setKeySerializer(new StringRedisSerializer());
- redisTemplate.setHashKeySerializer(new StringRedisSerializer());
-
- redisTemplate.setConnectionFactory(connectionFactory);
-
- return redisTemplate;
- }
- }
3.2 在test中测试Redis的相关操作
opsForValue()、opsForHash()、opsForList()、opsForSet()、opsForZSet()、通用操作
- @SpringBootTest
- @RunWith(SpringRunner.class)
- public class SpringDataRedisTest {
-
- @Autowired
- private RedisTemplate redisTemplate;
-
- /**
- * 操作String类型数据,添加键值对,添加有时间限制的键值对,当键不存在时再添加键值对
- */
- @Test
- public void testString(){
- redisTemplate.opsForValue().set("city123","beijing");
-
- String value = (String) redisTemplate.opsForValue().get("city123");
- System.out.println(value);
-
- redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);
-
- Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
- System.out.println(aBoolean);
- }
-
- /**
- * 操作Hash类型数据,存值 取值,获取所有字段、所有值
- */
- @Test
- public void testHash(){
- HashOperations hashOperations = redisTemplate.opsForHash();
-
- //存值
- hashOperations.put("002","name","xiaoming");
- hashOperations.put("002","age","20");
- hashOperations.put("002","address","bj");
-
- //取值
- String age = (String) hashOperations.get("002", "age");
- System.out.println(age);
-
- //获得hash结构中的所有字段
- Set keys = hashOperations.keys("002");
- for (Object key : keys) {
- System.out.println(key);
- }
-
- //获得hash结构中的所有值
- List values = hashOperations.values("002");
- for (Object value : values) {
- System.out.println(value);
- }
- }
-
- /**
- * 操作List类型的数据
- */
- @Test
- public void testList(){
- ListOperations listOperations = redisTemplate.opsForList();
-
- //存值
- listOperations.leftPush("mylist","a");
- listOperations.leftPushAll("mylist","b","c","d");
-
- //取值 从对头输出即左侧输出
- List<String> mylist = listOperations.range("mylist", 0, -1);
- for (String value : mylist) {
- System.out.println(value);
- }
-
- //获得列表长度 llen
- Long size = listOperations.size("mylist");
- int lSize = size.intValue();
- for (int i = 0; i < lSize; i++) {
- //出队列,从队尾输出即右侧输出
- String element = (String) listOperations.rightPop("mylist");
- System.out.println(element);
- }
- }
-
- /**
- * 操作Set类型的数据
- */
- @Test
- public void testSet(){
- SetOperations setOperations = redisTemplate.opsForSet();
-
- //存值
- setOperations.add("myset","a","b","c","a");
-
- //取值
- Set<String> myset = setOperations.members("myset");
- for (String o : myset) {
- System.out.println(o);
- }
-
- //删除成员
- setOperations.remove("myset","a","b");
-
- //取值
- myset = setOperations.members("myset");
- for (String o : myset) {
- System.out.println(o);
- }
-
- }
-
- /**
- * 操作ZSet类型的数据
- */
- @Test
- public void testZset(){
- ZSetOperations zSetOperations = redisTemplate.opsForZSet();
-
- //存值
- zSetOperations.add("myZset","a",10.0);
- zSetOperations.add("myZset","b",11.0);
- zSetOperations.add("myZset","c",12.0);
- zSetOperations.add("myZset","a",13.0);
-
- //取值
- Set<String> myZset = zSetOperations.range("myZset", 0, -1);
- for (String s : myZset) {
- System.out.println(s);
- }
-
- //修改分数
- zSetOperations.incrementScore("myZset","b",20.0);
-
- //取值
- myZset = zSetOperations.range("myZset", 0, -1);
- for (String s : myZset) {
- System.out.println(s);
- }
-
- //删除成员
- zSetOperations.remove("myZset","a","b");
-
- //取值
- myZset = zSetOperations.range("myZset", 0, -1);
- for (String s : myZset) {
- System.out.println(s);
- }
- }
-
- /**
- * 通用操作,针对不同的数据类型都可以操作
- */
- @Test
- public void testCommon(){
- //获取Redis中所有的key
- Set<String> keys = redisTemplate.keys("*");
- for (String key : keys) {
- System.out.println(key);
- }
-
- //判断某个key是否存在
- Boolean itcast = redisTemplate.hasKey("itcast");
- System.out.println(itcast);
-
- //删除指定key
- redisTemplate.delete("myZset");
-
- //获取指定key对应的value的数据类型
- DataType dataType = redisTemplate.type("myset");
- System.out.println(dataType.name());
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。