Redis的简单使用

Redis的简单使用

01 前期准备

  • 首先是下载Redis

  • 正常去Redis官网下就可以了

  • 下载之后进入文件

  • 通过在路径处cmd进入

  • redis-server.exe --service-install redis.windows.conf --service-name redis --loglevel verbose
  • 成功安装即可

  • 启动服务:redis-server.exe --service-start --service-name redis (后续启动Redis只需要这个命令就可以了)
  • 停止服务:redis-server.exe --service-stop --service-name redis
  • 卸载服务:redis-server.exe --service-uninstall–service-name redis

02 正式使用

  • 通过redis-cli.exe启动
  • 默认的端口号是6379

03 基本常识和通用操作

  • Redis默认是16个库,从0开始且默认操作0号数据库,可以通过select 数字的方式切换
select 2
#一般是 select index 的格式
  • Redis数据库是以键值对的方式储存的,通过dbsize 操作可以查看有多少对键值对
dbsize
# 查看DB大小
keys *
# 查看当前库所有key的值,(empty list or set)则为空
flushdb
# 清空当前数据库数据库
FLUSHALL 
# 清空所有数据的的数据
exists name
#搜索该数据库中是否有该名字的键,有则返回1,无则为0
move name index
#将键的值的移动到对应数据库,成功为1.失败为0
del name
#删除键值对,成功为1.失败为0
expire name time
#设置键值对的时间,成功为1,失败为0
ttl name
#查看对应键值对的剩余时间,当数字为-2时说明数据已经过期
type name
#查看对应键值对的值的数据类型

04 五大数据类型的简单操作

1.string

  • 常用操作
set name value
#向数据库中添加key为name,值为value,数据类型为string的键值对
get name
#从数据库中取出key为name的数据
append name value 
#向name数据尾部添加value的值,返回值为修改后的数据的长度
strlen name
#获取key为name的数据长度

incr name
#当数据为纯数字时使用,自增加一,如果非纯数字则返回错误(ERR value is not an integer or out of range),成功返回
decr name
#自减符号,与自增类似,对纯数字使用
incrby name index
#当数据为纯数字时使用,数字加index
decrby name index
#当数据为纯数字时使用,数字减index

getrange name start end
#按照数组的索引来取出数据
setrange name start value
#在对应索引处加入value,注:该方法无法改变数据的长度,所以会导致部分数据消失

setex name index value
#设置key为name,值为value,保存时间为index的键值对
setnx name value
#设置key为name,值为value,如果key存在,则返回0,无改变,如果key不存在就创建,返回1

mset k1 v1 k2 v2 ...
#批量插入任意对
mget k1 k2 k3
#批量获取任意对
msetnx k1 v1 k2 v2 ...
#批量插入任意对,成功返回1,失败返回0,注:该操作具有原子性,要么同时成功,要么同时失败

SET user:1 {name:kk,age:18} # 设置一个user,使用json保存数据

MSET user:2:name kk user:2:age 18
# redis中可以直接使用这种方式设置对象
MGET user:2:name user:2:age 
# 获取  user:{id}:{field}

GETSET name kk # 如果不存在值则返回 nil,并设置值
GETSET name ww # 如果存在值则获取原来的值并设置新的值

2.List

  • 有序可以重复,可以用索引获取
lrange name start end
#按照数组的索引来取出列表中的数据
lpush name value
#不存在就key创造一个列表,存在如果是列表就从上方插入一个数据,存在如果不是就报错(error) WRONGTYPE Operation against a key holding the wrong kind of value
rpush name value
#从列表下方插入一条数据
lpop name 
#从列表上方开始移除
rpop name
#从列表下方开始移除

lindex name index
#按数组的索引拿数据
llen name
#获取列表长度
lrem name index value
#在列表内删除index个数据,数据内容为value,注该方法不具有原子性,如果只找到一个数据,那也就删这个数据,不会因为删的数量不足index个,而失败
ltrim name start end 
#保留从start到end闭区间内的数据,其他数据全部删除
lset name index value
#将指定索引处的数据改变
linstert name before value1 value2
#往value1数据之后加入value2,失败返回-1
linstert name before value1 value2
#往value1数据之后加入value2

 rpoplpush name1 name2
 #将列表name1的最后一个数据转移到列表name2的最上方
 
  • Redis的list本质上是链表,当key不存在时创建新的链表

  • 随机定位能力差,首尾插入删除好,要注意链表

  • 可以当做栈/队列使用(lpush,lpop)

3.set

  • 和list不一样,set的值不能重复,且无序不能用索引查找
sadd name value
#向name的set里插入value,成功返回1,失败返回0,不能插入重复数据,如果不存在name的set会自动生成一个set
smembers name
#查询set的所有数据
sismember name
#查询set里是否有name数据,成功返回1,失败返回0
srandmember name index
#从指定set里随机抽取index个数据展示
spop myset index
#随机删除index个数据,当没有index时,默认随机删除1个

smove name1 name2 value
#将数据value从name1的set容器中转移到name2容器
sdiff name1 name2
#差集 展示name2有的,name1没有的数据
sinter name1 name2
#交集 展示name1和name2共有的数据
sunion name1 name2
#并集 展示name1和name2的数据

4.Hash

hset name1 name2 value
#向名为name1的Hash集合里加入key为name2 值为value的键值对
hget name1 name2
#从名为name1的Hash集合里取出key为name的键
hmset name1 k1 value1 k2 value2
#向名为name1的Hash集合里批量加入键值对
hmget name1 k1 k2 k3
#从向名为name1的Hash集合里批量取出值
hgetall name1
#展示name1中所有键值对

hdel name1 k1
#删除name1的hash集合中的k1键值对,成功为1失败为0
hlen name1
#查询名为name1的hash集合中有几对键值对
hexisits name1 k1
#判断name1集合中是否存在k1的键值对,存在为1,不存在为0
hkeys myhash
# 获取全部的key
hvals myhash
# 获取全部的value

hincrby name1 k1 index
#当值为纯数字时使用,是k1的数据加上index,当k1对应的value不是纯数字时,报错(error) ERR hash value is not an integer,当k1不存在时,直接视为加入k1-index的键值对
hsetnx name1 k1 value
#向name1集合中加入键值对,如果不存在则可以设置,存在不能设置
  • 更适合个人信息的存储

5.sorted set/zset(有序集合)

  • 在set的基础上加了一个ksv
  • 即是以键值对的形式报存,value不能重复,key可以重复
zadd name k1 v1
#添加一个值
zadd name k1 v1 k2 v2
#批量添加值
zrange name 0 -1
#查看全部,数字部分可改,通过索引方式取出

ZRANGEBYSCORE salary -inf +inf # 升序 负无穷 - 正无穷
ZRANGEBYSCORE salary -inf 2000 WITHSCORES # 自定义范围,并且附带对应的score值
ZREVRANGE salary 0 -1 WITHSCORES # 降序查询
ZCOUNT salary 1000 2000 # 查询 1000-2000有多少个数据
ZREM salary xiaolv # 删除
  • 成绩表、工资表、排行榜等需要排序的表
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架,而Redis是一个开源的内存数据存储系统。结合使用Spring Boot和Redis可以实现高效的数据缓存和持久化。 在Spring Boot中使用Redis,首先需要在项目的pom.xml文件中添加Redis的依赖。然后,在application.properties或application.yml文件中配置Redis的连接信息,包括主机名、端口号、密码等。 接下来,可以通过使用Spring Data Redis来简化对Redis的操作。Spring Data Redis提供了一系列的注解和模板类,可以方便地进行数据的读取、写入和删除等操作。 以下是一个简单的示例,演示了如何在Spring Boot中使用Redis: 1. 添加依赖: 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接信息: 在application.properties或application.yml文件中添加以下配置: ```properties spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password= ``` 3. 创建Redis操作类: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @Component public class RedisUtil { @Autowired private RedisTemplate<String, Object> redisTemplate; public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } public Object get(String key) { return redisTemplate.opsForValue().get(key); } public void delete(String key) { redisTemplate.delete(key); } } ``` 4. 使用Redis操作类: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Autowired private RedisUtil redisUtil; @GetMapping("/user/{id}") public User getUser(@PathVariable String id) { // 先从缓存中获取数据 User user = (User) redisUtil.get("user:" + id); if (user == null) { // 如果缓存中不存在,则从数据库中获取数据 user = userService.getUserById(id); // 将数据存入缓存 redisUtil.set("user:" + id, user); } return user; } } ``` 以上示例中,我们创建了一个RedisUtil类来封装对Redis的操作,然后在UserController中使用RedisUtil来实现对用户数据的缓存。当请求用户数据时,先从缓存中获取,如果缓存中不存在,则从数据库中获取,并将数据存入缓存

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣布无人罪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值