建站网站的图片,怎么做类似淘宝的网站,便利的聊城网站建设,江西建设局网站目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类#xff0c;创建RedisTempla… 目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类创建RedisTemplate对象通过RedisTemplate对象操作Redis操作常见类型数据 数据类型
五种常用数据类型介绍
Redis存储的是key-value结构的数据其中key是字符串类型value有5种常用的数据类型
字符串 string哈希 hash列表 list集合 set有序集合 sorted set / zset
各种数据类型特点 解释说明
字符串(string)普通字符串Redis中最简单的数据类型哈希(hash)也叫散列类似于Java中的HashMap结构列表(list)按照插入顺序排序可以有重复元素类似于Java中的LinkedList集合(set)无序集合没有重复元素类似于Java中的HashSet有序集合(sorted set/zset)集合中每个元素关联一个分数(score)根据分数升序排序没有重复元素
常用命令
字符串操作命令
Redis 中字符串类型常用命令
SET key value 设置指定key的值GET key 获取指定key的值SETEX key seconds value 设置指定key的值并将 key 的过期时间设为 seconds 秒SETNX key value 只有在 key 不存在时设置 key 的值
更多命令可以参考Redis中文网https://www.redis.net.cn
哈希操作命令
Redis hash 是一个string类型的 field 和 value 的映射表hash特别适合用于存储对象常用命令
HSET key field value 将哈希表 key 中的字段 field 的值设为 valueHGET key field 获取存储在哈希表中指定字段的值HDEL key field 删除存储在哈希表中的指定字段HKEYS key 获取哈希表中所有字段HVALS key 获取哈希表中所有值
列表操作命令
Redis 列表是简单的字符串列表按照插入顺序排序常用命令
LPUSH key value1 [value2] 将一个或多个值插入到列表头部LRANGE key start stop 获取列表指定范围内的元素RPOP key 移除并获取列表最后一个元素LLEN key 获取列表长度BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止
集合操作命令
Redis set 是string类型的无序集合。集合成员是唯一的这就意味着集合中不能出现重复的数据常用命令
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 有序集合中对指定成员的分数加上增量 incrementZREM key member [member …] 移除有序集合中的一个或多个成员
通用命令
Redis的通用命令是不分数据类型的都可以使用的命令
KEYS pattern 查找所有符合给定模式( pattern)的 keyEXISTS key 检查给定 key 是否存在TYPE key 返回 key 所储存的值的类型DEL key 该命令用于在 key 存在是删除 key
在Java中操作Redis
Redis的Java客户端
Redis 的 Java 客户端很多常用的几种
JedisLettuceSpring Data Redis
Spring 对 Redis 客户端进行了整合提供了 Spring Data Redis在Spring Boot项目中还提供了对应的Starter即 spring-boot-starter-data-redis。
Spring Data Redis使用方式
介绍
Spring Data Redis 是 Spring 的一部分提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务对 Redis 底层开发包进行了高度封装。在 Spring 项目中可以使用Spring Data Redis来简化 Redis 操作。
网址https://spring.io/projects/spring-data-redis
Spring Boot提供了对应的Startermaven坐标
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependencySpring Data Redis中提供了一个高度封装的类RedisTemplate对相关api进行了归类封装,将同一类型操作封装为operation接口具体分类如下
ValueOperationsstring数据操作SetOperationsset类型数据操作ZSetOperationszset类型数据操作HashOperationshash类型的数据操作ListOperationslist类型的数据操作
环境搭建
导入Spring Data Redis的maven坐标
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency配置Redis数据源
在配置文件中添加
sky:redis:host: localhostport: 6379password: 123456database: 10
spring:redis:host: localhostport: 6379# 根据是否在redis配置文件内配置访问密码password: 123456database: 10解释说明
database:指定使用Redis的哪个数据库Redis服务启动后默认有16个数据库编号分别是从0到15。
可以通过修改Redis配置文件来指定数据库的数量。
编写配置类创建RedisTemplate对象
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;Configuration
Slf4j
public class RedisConfiguration {Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info(开始创建redis模板对象...);RedisTemplate redisTemplate new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}解释说明
当前配置类不是必须的因为 Spring Boot 框架会自动装配 RedisTemplate 对象但是默认的key序列化器为
JdkSerializationRedisSerializer导致我们存到Redis中后的数据和原始数据有差别故设置为StringRedisSerializer序列化器。
通过RedisTemplate对象操作Redis
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;SpringBootTest
public class SpringDataRedisTest {Autowiredprivate RedisTemplate redisTemplate;Testpublic void testRedisTemplate(){System.out.println(redisTemplate);//string数据操作ValueOperations valueOperations redisTemplate.opsForValue();//hash类型的数据操作HashOperations hashOperations redisTemplate.opsForHash();//list类型的数据操作ListOperations listOperations redisTemplate.opsForList();//set类型数据操作SetOperations setOperations redisTemplate.opsForSet();//zset类型数据操作ZSetOperations zSetOperations redisTemplate.opsForZSet();}
}操作常见类型数据
操作字符串类型数据
/**
* 操作字符串类型的数据
*/
Test
public void testString(){// set get setex setnxredisTemplate.opsForValue().set(name,小明);String city (String) redisTemplate.opsForValue().get(name);System.out.println(city);//TimeUnit.MINUTES为设置有效时间的时间单位redisTemplate.opsForValue().set(code,1234,3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent(lock,1);redisTemplate.opsForValue().setIfAbsent(lock,2);
}操作哈希类型数据
/**
* 操作哈希类型的数据
*/
Test
public void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations redisTemplate.opsForHash();hashOperations.put(100,name,tom);hashOperations.put(100,age,20);String name (String) hashOperations.get(100, name);System.out.println(name);Set keys hashOperations.keys(100);System.out.println(keys);List values hashOperations.values(100);System.out.println(values);hashOperations.delete(100,age);
}操作列表类型数据
/**
* 操作列表类型的数据
*/
Test
public void testList(){
//lpush lrange rpop llen
ListOperations listOperations redisTemplate.opsForList();listOperations.leftPushAll(mylist,a,b,c);
listOperations.leftPush(mylist,d);List mylist listOperations.range(mylist, 0, -1);
System.out.println(mylist);listOperations.rightPop(mylist);Long size listOperations.size(mylist);
System.out.println(size);
}操作集合类型数据
/**
* 操作集合类型的数据
*/
Test
public void testSet(){
//sadd smembers scard sinter sunion srem
SetOperations setOperations redisTemplate.opsForSet();setOperations.add(set1,a,b,c,d);
setOperations.add(set2,a,b,x,y);Set members setOperations.members(set1);
System.out.println(members);Long size setOperations.size(set1);
System.out.println(size);Set intersect setOperations.intersect(set1, set2);
System.out.println(intersect);Set union setOperations.union(set1, set2);
System.out.println(union);setOperations.remove(set1,a,b);
}操作有序集合类型数据
/**
* 操作有序集合类型的数据
*/
Test
public void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations redisTemplate.opsForZSet();zSetOperations.add(zset1,a,10);zSetOperations.add(zset1,b,12);zSetOperations.add(zset1,c,9);Set zset1 zSetOperations.range(zset1, 0, -1);System.out.println(zset1);zSetOperations.incrementScore(zset1,c,10);zSetOperations.remove(zset1,a,b);
}通用命令操作
/**
* 通用命令操作
*/
Test
public void testCommon(){
//keys exists type del
Set keys redisTemplate.keys(*);
System.out.println(keys);Boolean name redisTemplate.hasKey(name);
Boolean set1 redisTemplate.hasKey(set1);for (Object key : keys) {
DataType type redisTemplate.type(key);
System.out.println(type.name());
}redisTemplate.delete(mylist);
}