Redis学习笔记(基础部分)

这篇博客是Redis入门教程的学习笔记,涵盖了Redis的介绍、安装、常用命令以及如何使用Java(Jedis)连接Redis。介绍了Redis作为内存数据库的特性,NoSQL的种类,Redis的数据结构和命令,以及在Linux环境下安装Redis和使用图形界面管理工具。
摘要由CSDN通过智能技术生成

一.Redis介绍

说明:此文档主要内容是B站上的一个Redis入门教程的一个笔记记录

1.1引言

1.1.1现实需求与矛盾

1.由于用户量增大,请求数量增大,数据压力过大
2.多台服务器数据不同步
3.多台服务器的锁不存在互斥性

1.1.2解决方案

1.Redis是基于内存存储和读取数据的
2.可以将之前存放在session中的共享数据统一存放在Redis中

3.Redis基于用户请求是单线程的

1.2NoSQL介绍

NoSQL,(Not Only SQL),可以理解为非关系型数据库,区别于关系型数据库,只是做一个区分,主要分为:
1.key-value :Redis
2.文档型数据库:Slor,Mongodb
3.面向列:Hbase
4.图形化:Neo4j

1.3Redis介绍

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

二.Redis安装

2.1安装Redis

在csdn找教程,github,镜像网站与官网找安装包与教程操作

尽量在Linux虚拟机上安装

version:5.0.7
image:daocloud.io/library/redis:5.0.7
restart:always
container_name:redis
envirment:
-TZ=Aisa/Shanghai
ports:
-6379:6379
安装图形化用户界面,gitHub

2.2连接Redis

windows环境下一键安装后,在命令行界面输入命令启动服务,操作细节就不再多赘述,没有加入Path路径下使用命令要先到Redis安装目录下

执行以下命令

redis-server.exe redis.windows.conf

出现以下界面表示成功

在这里插入图片描述

注意事项:

服务启动后不能关掉CMD窗口,关闭后redis服务也会同时关闭。为了方便可以将redis添加到Windows服务中,添加命令如下

redis-server.exe --service-install redis.windows.conf --loglevel verbose

常用命令:

停止服务

redis-server --service-stop

启动服务

redis-server --service-start

客户端启动

redis-cli

2.3使用图形界面

下载安装redis desktop manager,新版本收费,在github上可以找到收费之前的版本。也可以选择其他的工具,一键安装,连接也很简单

三.Redis常用命令

3.1 Redis存储数据的结构

3.1.1.key-string:一个key对应一个值(最常用)
3.1.2.key-hash:一个key对应一个map(对象数据)
3.1.3.key-list:一个key对应一个列表(可以实现栈和队列)
3.1.4.key-set:一个key对应一个集合(并,差,交的操作)
3.1.5.key-zset:一个key对应一个有序集合(排行榜,积分存储)

在这里插入图片描述

3.2 string常用命令

#1.添加值
set key value

#2.取值
get key

#3.批量操作
mset key value [key value ...]
mget key [key ...]

#4.自增命令(自增1)
incr key

#5.自减命令(自减1)
decr key

#6.自增或自减指定数量
incrby key increment
decrby key increment

#7.设置值的同时指定生存时间(添加数据时尽量设置生存时间)
setex key second value

#8.设置值,若当前key存在,什么也不做,否则添加
setnx key value

#9.在key对应的value后,追加内容
append key value

#10.查看value字符串的长度
strlen key

3.3 hash常用命令

#1.存储数据
hset key field value

#2.获取数据
hget key field

#3.批量操作
hmset key field value [field value ...]
hmget key field [field ...]

#4.自增(指定大小),不要对字符串类型自增
hincrby key field increment

#5. 设置值,若key - field不存在,添加,反之什么也不做
hsetnx key field value

#6.检查field是否存在
hexists key field

#7.删除key对应的某一个或多个field
hdel key field [field]

#8.获取当前hash结构中全部的field和value
hgetall key

#9.获取全部的field
hkeys key

#10.获取全部value
hvals key

#11.获取field数量
hlen key


3.4 list常用命令

#1.存储数据(l左侧插入,r右侧插入)
lpush key value [value ...]
rpush key value [value ...]

#2.验证插入(key不存在,undo,key存在且为list结构时,插入)
lpushx key value 
rpushx key value 

#3.指定索引插入(会覆盖原来索引元素值,类似数组操作)
lset key index value

#4.弹栈方式获取数据(获取并移除,类似出栈)
lpop key
rpop key

#5.指定索引范围数据(与python索引结构类似,正数左起始,负数右起始)
lrange key start stop

#6.获取指定索引数据
lindex key index

#7.获取列表长度
llen key

#8.删除列表数据(删除count个数的value值,count为正,左边删,负,右边删,count==0,删除全部数据)
lrem key count value

#9.保留指定索引范围类得数据,超出部分移除
ltrim key start stop

#10.将一个列表的最后一个数据放到另一个列表的头部(原子操作)
rpoplpush list1 list2

3.5 set常用命令

#1.存储数据
sadd key member [member ...]

#2.获取数据(全部)
smembers key

#3.随机获取一个数据(获取并移除,默认弹一个)
spop key [count]

#4.多个set取交集
sinter set1 set2 ...

#5.并集(所有集合的去重)
sunion set1 set2 ...

#6.差集(多个集合不一样的数据,注意运算顺序)
sdiff set1 set2 ...

#6.删除数据(支持批量操作)
srem key member [member...]

#7.查看集合是否包含某个值
sismember key member

3.6 zset常用命令

#1.添加数据
zadd key score member [score member ...]

#2.修改score(member存在于key,正常增加,不存在,实现添加)
zincrby key increment member

#3.查看指定member的score
zscore key member

#4.获取zset中数据的量
zcart key

#5.根据score得范围查询member的数量(左右取闭区间)
zcount key min max

#6.删除zset中的成员
zrem key member [member...]

#7.根据score升序,获取指定范围内数据(加withscores后会返回score+member,不加返回member)
zrange key start stop [withscores]

#8.降序
zrevrange key start stop [withscores]

#9.根据score的范围获取数据(limit参数部分类似mysql,加(表示开区间,)表示闭区间,最大值+inf,最小值-inf)
zrangebyscore key min max [withscores] [limit offset count]

#10.根据score的范围获取数据(参数位置改变)
zrangebyscore key max min [withscores] [limit offset count]

3.7 key的常用命令

#1.查看全部key(pattern:*,xxx*,*xxx.通配符)
keys pattern

#2.查看某个key是否存在(1,存在;0,不存在)
exists key

#3.删除key(支持批量操作)
del key [key...]

#4.设置key的生存时间(秒,毫秒级别)
expire key second
pexpire key milliseconds

#5.设置key的生存时间(到某一个时间点,单位为s,ms)
expireat key timestamp
pexpireat key milliseconds

#6.查看key的剩余生存时间(单位s,ms,-2当前key不存在,-1未设置生存时间,否则返回具体剩余时间)
ttl key
pttl key

#7.移除key的生存时间(1-移除成功;0-key不存在生存时间或key不存在)
persist key

#8.选择操作的库(共有16个库,默认0号库)
select 0~15

#9.移动key到另外一个库中
move key db

3.8 库的常用命令

#1.清空当前所在的库
flushdb

#2.清空全部数据库
flushall

#3.查看当前所在库有多少个key
dbsize

#4.查看最后一次操作的时间(保存在磁盘上的时间)
lastsave

#5.实时监控Redis服务收到的目录
monitor

四.Java连接Redis

有Jedis 连接Redis与Lettuce连接,使用Jedis,其方法对应redis基础命令操作

4.1 Jedis连接Redis

  • 创建maven项目

  • 导入依赖(Jedis,junit,lombok,spring-context,fastjson)

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <encoding>UTF-8</encoding>
            <java.version>15</java.version>
            <maven.compiler.source>15</maven.compiler.source
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值