母婴设计网站,ppt模板免费下载 素材红色,10个奇怪又有趣的网站,微信公众平台申请入口#x1f525;博客主页#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞#x1f44d;收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 … 博客主页 【小扳_-CSDN博客】 ❤感谢大家点赞收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 3.5 有序集合操作命名 3.6 通用命令 4.0 在 Java 中操作 Redis 4.1 Spring Data Redis 环境搭建 4.2 操作字符串类型的数据 4.3 操作哈希类型的数据 4.4 操作列表类型的数据 4.5 操作集合类型的数据 4.6 操作有序集合类型的数据 1.0 Redis 概述 Redis 是一个基于内存的 key-value 结构数据库。基于内存存储读写性能高。适合存储热点数据以便大量用户访问时可以快速得到响应。 1.1 Redis 下载与安装 Redis 官网Redis - The Real-time Data Platform Redis 的 Windows 版属于绿色软件。直接解压即可使用解压目录结构如下 1redis.windows.conf配置文件用来配置 Redis 服务器的各种参数和选项。
比如 port指定 Redis 服务器监听的端口号默认为 6379。 bind指定Redis服务器监听的IP地址。 requirepass设置访问Redis数据库需要的认证密码。 maxmemory设置Redis数据库使用的最大内存限制。 maxclients设置Redis允许的最大客户端连接数。 logfile指定Redis日志文件的位置。 dir指定Redis持久化数据文件的存储目录。 pidfile指定Redis服务器进程的PID文件位置。 2redis-server.exeRedis 服务端可执行文件用来启动 Redis 服务端。 3redis-cli.exeRedis 客户端可执行文件用来启动 Redis 客户端。 2.0 Redis 数据类型 Redis 存储的是 key-value 结构的数据其中 key 是字符串类型value 有5 种常用的数据类型字符串 string、哈希 hash、列表 list、集合 set、有序集合 sorted set/zset 。
各种数据类型的特点 1字符串 string普通字符串Redis 中最简单的数据类型。 2哈希 hash也叫散列类似于 Java 中的 HashMap 结构。 3列表 list按照插入顺序可以有重复元素类似于 Java 中的 LinkedList 。 4集合 set无序集合没有重复元素类似于 Java 中的 HashSet 。 5有序集合 zset集合中每一个元素关联一个分数 score根据分数升序排序没有重复元素。 3.0 Redis 常见五种类型的命令 字符串操作命令、哈希操作命令、列表操作命令、集合操作命令、有序集合操作命令。 3.1 字符串操作命令
Redis 字符串类型的常用命令 1SET key value设置指定 key 的值。 2GET key获取指定 key 的值。 3SETEX key seconds value设置指定 key 的值并将 key 的过期时间设为 seconds 秒。 4SETNX key value只有在 key 不存在时设置 key 的值。
代码演示 set id 1
OKget id
1setex code 30 123456
OKsetnx id 2
0 3.2 哈希操作命令 Redis hash 是一个 string 类型的 field 和 value 的映射表hash 特别适合用于存储对象。
Redis 哈希类型的常用命令 1HSET key field value将哈希表 key 中的字段 field 的值设为 value 。 2HGET key field获取存储在哈希表中指定字段的值。 3HDEL key field删除存储在哈希表中的指定字段。 4HKEYS key获取哈希表中所有字段。 5HVALS key获取哈希表中所有值。
代码演示 存储一个 student 对象信息。
设置字段值 HSET student name 小板
1HSET student age 22
1hset student gender 男
1 运行结果 获取相应字段的值 hget student name
小板hget student age
22hget student gender
男获取字段相对应的值。 获取 student 所有的 field 与 所有的 value hkeys student
name
age
genderhvals student
小板
22
男 删除指定的字段 hdel student gender
1 运行结果 3.3 列表操作命令 Redis 列表是简单的字符串列表按照插入顺序排序。
Redis 列表类型的常用命令 1LPUSH key value1 [value2]将一个或多个值插入到列表头部。 2LRANGE key start stop获取列表指定范围内的元素。 3RPOP key移除并获取列表最后一个元素。 4LLEN key获取列表长度。
代码演示
在列表中插入多个值 lpush mylist a b c d
4 运行结果 该插入的方式为头插数据。
获取指定全部数据 lrange mylist 0 -1
d
c
b
a 删除最后一个元素 rpop mylist
a 获取列表中的个数 llen mylist
3 3.4 集合操作命令 Redis set 是 string 类型的无序集合。集合成员是唯一的集合中不能出现重复的数据。
Redis 集合类型的常用命令 1SADD key member1 [member2]向集合添加一个或多个成员。 2SMEMBERS key返回集合中的所有成员。 3SCARD key获取集合的成员数。 4SINTER key1 [key2]返回给定所有集合的交集。 5SUNION key1 [key2]返回所有给定所有集合的并集。 6SREM key member1 [member2]删除集合中一个或多个成员。
代码演示
向集合中添加元素 sadd set1 a b c d
4sadd set2 a b x y
4 需要注意的是添加顺序不等于存储之后的顺序。这里就可以体现出了无序性。 获取所有的成员 smembers set1
a
d
c
bsmembers set2
a
x
y
b 获取集合中成员的个数 scard set1
4scard set2
4 获取两个集合的交集 sinter set1 set2
a
b 获取两个集合的并集 sunion set1 set2
a
x
y
d
c
b 3.5 有序集合操作命名 Redis 有序集合是 string 类型元素的集合且不允许有重复成员。每一个元素都会关联一个 double 类型的分数。
Redis 有序集合类型的常用命令 1ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员。 2ZRANGE key start stop[WITHSCORE]通过索引区间返回有序集合中指定区间的成员。 3ZINCRBY key increment member有序集合中对指定成员的分数加上增量 increment 。 4ZREM key member1 [member2]移除有序集合中的一个或多个成员。
代码演示
向有序集合中添加成员 zadd zset 10 a 11 b 12 c
3 运行结果 获取全部成员 zrange zset 0 -1
a
b
c 也可以带上分数 zrange zset 0 -1 WITHSCORES
a
10
b
11
c
12 对 zet 集合中的指定成员的 score 增加 zincrby zset 5 a
15 运行结果 移除集合中指定的成员 zrem zset c
1 运行结果 3.6 通用命令 Redis 的通用命令是不分数据类型的都可以使用命令。
Redis 通用的常用命令 1KEYS pattern查找所有符合给定模式pattern的 key 。 2EXISTS key检查给定 key 是否存在。 3TYPE key返回 key 所存储的值的类型。 4DEL key该命令用于在 key 存在则删除 key 。
代码演示
KEYS *匹配所有的 key keys *
id
STUDENT
set2
zset
set1
student
mylist
list 检查是否存在 set1 exists set1
1exists set3
0 存在则返回 1不存在则返回 0 。 判断类型 type set1
settype list
listtype student
hashtype id
stringtype zset
zset 删除 list del list
1keys *
id
STUDENT
set2
zset
set1
student
mylist 4.0 在 Java 中操作 Redis Redis 的 Java 客户端很多常用的几种Jedis、Lettuce、Spring Data Redis 。在 Spring Data Redis 是 Spring 的一部分对 Redis 底层开发进行了高度封装在 Spring 项目中可以使用 Spring Data Redis 来简化操作。 4.1 Spring Data Redis 环境搭建 1导入 Spring Data Redis 的 maven 坐标。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency 2配置 Redis 数据源。 redis:host: localhostport: 6379password: 123456database: 0 host主机号、port端口号、password密码、database数据库。 这里的数据库指定是 Redis 中的数据库一共有 16 个数据库默认会自动选择 0 号的数据库。 3编写配置类创建 RedisTemplate 对象。 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
public class RedisConfiguration {Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){//创建 redis 模板对象RedisTemplate redisTemplate new RedisTemplate();//设置 redis 的连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);//设置 redis key 的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
} 4通过 RedisTemplate 对象操作 Redis 。 完成以上的步骤就可以通过 RedisTemplate 对象来获取五种类型的操作对象了。
代码演示 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 test {AutowiredRedisTemplate redisTemplate;Testpublic void test(){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();}
} 4.2 操作字符串类型的数据
常见的方法 1set(key,value)设置键值对 k v 。 2set(key,value,timeout,unit)设置有效时间的键值对。 3get(key)根据键来获取值。 4setIfAbsent(key,value)设置一个键值对只有在 key 不存在时设置 key 的值。
代码演示 Testpublic void test1(){//先获取到操作字符串类型的对象ValueOperations valueOperations redisTemplate.opsForValue();//设置键值对 k vvalueOperations.set(cls,1);//根据键来获取值String cls (String) valueOperations.get(cls);//设置有效时间的键值对,设置一个有效时间为 3 分钟的键值对valueOperations.set(code,123456,3, TimeUnit.MINUTES);//设置一个键值对只有在 key 不存在时设置 key 的值valueOperations.setIfAbsent(bee,2);//因为已经存在bee键所以值依然是3valueOperations.setIfAbsent(bee,3);} 运行结果 4.3 操作哈希类型的数据
常见的方法 1put(key,field,value)新增数据。 2get(key,field)获取数据。 3keys(key)获取 key 中的全部字段。 4values(key)获取 key 中的全部值。 5delete(key,field)删除 key 中 field 的字段。
代码演示 Testpublic void test2(){//先获取到操作哈希的对象HashOperations hashOperations redisTemplate.opsForHash();//新增数据hashOperations.put(student,id,1);hashOperations.put(student,name,小扳手);hashOperations.put(student,age,22);//根据字段来获取值String id (String) hashOperations.get(student, id);String name (String) hashOperations.get(student, name);System.out.println(id name);//获取student中的全部键Set student hashOperations.keys(student);System.out.println(student);//获取student中的全部值List student1 hashOperations.values(student);System.out.println(student1);//删除指定的字段hashOperations.delete(student,age);} 运行结果 4.4 操作列表类型的数据
常见的方法 1leftPushAll(key,values)批量增加数据。 2leftPush(key,value)新增数据。 3range(key,start,end)获取指定范围的数据。 4rightPop(key)删除最后一个数据。 5size(key)获取列表中的数据个数。
代码演示 Testpublic void test3(){ListOperations listOperations redisTemplate.opsForList();//批量增加数据listOperations.leftPushAll(mylist,1,2,3);//新增单个数据listOperations.leftPush(mylist,4);//获取范围内的数据List mylist listOperations.range(mylist, 0, -1);System.out.println(mylist);//删除最后一个数据String date (String) listOperations.rightPop(mylist);System.out.println(date);//获取列表中的数据个数Long len listOperations.size(mylist);System.out.println(len);} 运行结果 4.5 操作集合类型的数据
常见的方法 1add(key,values)新增单个数据或者批量新增数据。 2members(key)获取 Key 中的全部成员。 3size(key)获取 key 中的成员个数。 4intersect(key1,key2)获取两个集合中的交集。 5union(key1,key2)获取两个集合中的并集。 6remove(key,values)删除 key 中指定的 value 可以是一个 value 也可以是多个 value 。
代码如下 Testpublic void test4(){SetOperations setOperations redisTemplate.opsForSet();//批量新增数据setOperations.add(set1,a,b,c);setOperations.add(set2,a,x,y);//获取key中的成员Set member setOperations.members(set1);System.out.println(member);//获取key中的成员个数Long len setOperations.size(set2);System.out.println(len);//两个集合的交集Set intersect setOperations.intersect(set1, set2);System.out.println(intersect);//获取两个集合的并集Set union setOperations.union(set1, set2);System.out.println(union);//删除成员setOperations.remove(set1,c);} 运行结果 4.6 操作有序集合类型的数据
常见的方法 1add(key,value,score)新增数据。 2range(key,start,end)获取指定范围的数据。 3incrementScore(key,value,delta)给指定的数据的分数增加 dalta 。 4remove(key,values)删除数据。可以删除单个数据也可以批量删除数据。
代码演示 Testpublic void test5(){ZSetOperations zSetOperations redisTemplate.opsForZSet();//新增数据zSetOperations.add(z,a,10);zSetOperations.add(z,b,15);zSetOperations.add(z,c,20);//获取指定范围的数据Set z zSetOperations.range(z, 0, -1);System.out.println(z);//给指定的数据增加分数zSetOperations.incrementScore(z,a,10);//删除数据zSetOperations.remove(z,c);} 运行结果