Redis 基础

Redis 基础

Redis( Remote Dictionary Server)是用C语言开发的一个开源的高性能键值对(key-value)数据库
持续更新…

应用场景简单描述,如图:

请添加图片描述

Redis特征:

  • 数据之间没有必然联系
  • 内部采用单线程机制进行工作
  • 高性能并发
  • 多数据类型支持
  • 持久化支持

Redis安装

对于Windows系统,可以按照如下步骤来进行开发:

点击这个网址选择3.2版本Downloads

下载完毕后来到相应目录下,双击启动redis-serve.exe:

r
·

再双击启动客户端redis-cli.exe即可:

在这里插入图片描述

对于Linux系统,依次执行以下命令来进行安装:

wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar -zvxf redis-6.0.8.tar.gz
sudo mv [当前下载路径] /usr/local/bin
cd /usr/local/bin
make
cd src
./redis-server

抑或直接通过Docker命令直接部署(挂载卷):

mkdir -p /home/yiyexingchen/DockerFile/Redis/conf
mkdir -p /home/yiyexingchen/DockerFile/Redis/data
touch /home/yiyexingchen/DockerFile/Redis/conf/redis.conf
docker run -itd -v /home/yiyexingchen/DockerFile/Redis/conf/redis.conf:/etc/redis/redis.conf -v /home/yiyexingchen/DockerFile/Redis/data:/data -p 6666:6379 reids

在这里插入图片描述

更多配置文件说明请查看官网


基本指令

  • set 命令 创建
  • get 命令 获取
  • clear命令 清屏
  • help命令 帮助
  • quit/exit命令 退出
  • select 切换数据库
#set [key] [value]
set name redis
#get [key]
get name
get age # 不存在的键

大致演示:

在这里插入图片描述

在这里插入图片描述

常用数据存储类型

  • string
  • hash
  • list
  • set
  • sorted_set

在这里插入图片描述

string类型
keys * 查看所有键
exists 判断键是否存在 exists key
set 创建 set key value
unlink 非阻塞删除(仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作中) unlink key
get 获取 get key
del 删除 del key
expire 为key设置生命周期 expire key seconde
ttl 通过键查看剩余生命周期(-1表示永不过期,-2代表已经过期) ttl key
mset 批量创建 mset key1 value1 key2 value2 ...
mget 批量获取 mget key1,key2 ...
strlen 获取值的长度 strlen key
append 追加 append key vlaue
incr 自增(需要是数值,默认自增为1) incr key
decr 自减(需要是数值,默认自减为1)decr key
incrby 自增(需要是数值,自增量为increment,不可以为小数)incrby key increment
decrby 自增(需要是数值,自减量为increment,不可以为小数) decrby key increment
incrbyfloat 自增(需要是数值,自增量为increment,可以为小数)incrbyfloat key increment
setex 设置数据的指定存活周期setex key seconds value
psetex 设置数据的指定存活周期psetex key millisecond value

hash类型
hset 创建 hset key field value
hget 获取 hget key field
hgetall 获取所有键值对 hgetall key
hdel 删除特定属性 hdel key field1 field2 ...
hmset 批量创建 hset key field1 value1 field2 value2 ...
hmget 批量获取 hget key field1 field2 ...
hlen 获取哈希表中的字段的数量 hlen key
hsetnx 创建新的键值对,如果已经存在,则创建失败 hsetnx key field value
hexists 获取哈希表中是否存在指定的字段 hexists key field
hkeys 获取哈希表中的所有字段名 hkeys key
hvals 获取哈希表中的所有字段值 hvals key
hincrby 指定字段数值增加某一整数数值 hincrby key filed increment
hincrbyfloat 指定字段数值增加某一小数数值 hincrbyfloat key filed increment

list类型(底层使用双向链表)
lpush 向左添加数据 lpush key value1 value2 ...
rpush 向左添加数据 rpush key value1 value2 ...
lrange 向左获取一段范围的数据 lrange key start stop
lindex 向左获取某索引的数据 lindex key index
llen 长度 llen key
lpop 向左弹出首元素 lpop key
rpop 向右弹出首元素 rpop key
blpop 如果为空,向左等待规定时间弹出首元素 blpop key timeout
brpop 如果为空,向右等待规定时间弹出首元素 brpop key timeout
lrem 删除指定元素值count个数元素(从左往右的计数) lrem key count value

set类型
sadd 添加 sadd key member1 member2 ...
smembers 获取所有数据 smembers key
srem 删除 srem key memeber1 member2 ...
scard 获取数据总量 scard key
sismember 判断是否为集合成员 key member
srandmember 随机获取集合中指定数量的元素 srandmember key count
spop 随机获取集合中指定个数的数据并将这些数据移除集合 spop key count
sinter 求两个集合的交集 sinter key1 key2
sunion 求两个集合的并集 sunion key1 key2
sdiff 求两个集合(有方向)作差集 sdiff key1 key2
sinterstore 求两个集合的交集并将结果保存到新集合中 sinterstore destination key1 key2
sunionstore 求两个集合的并集并将结果保存到新集合中 sunionstore destination key1 key2
sdiffstore 求两个集合的差集并将结果保存到新集合中 sdiffstore destination key1 key2
smove 将源数据中的元素移动至目标集合中 smove source distination member

sorted_set类型
zadd 添加数据 zadd key score1 member1 socre2 member2 ...
zrange 获取数据 zrange key start stop [withscore(可选项:输出score)]
zrevrange 获取逆序数据 zrevrange start stop [withscore(可选项:输出score)]
zrem 删除数据 zrem key member1 member2 ...
zrangebyscore 查询指定score范围(闭集)的元素 zrangebyscore key min max [withscore]
zrevrangebyscore 查询指定score范围(闭集)的元素逆序 zrevrangebyscore key min max [withscore]
zremrangebyrank 删除指定排行范围的元素 zremrangerank key start stop
zremrangebyscore 删除指定分数范围的元素 zremrangescore key min max
zcard 获取集合元素个数 zcard key
zcount 获取对应范围元素个数 zcount key min max
zinterstore 集合交集并将数据存储到新的集合中(这里元素的score会作相加操作) zinterstore destination numkeys(集合个数) key1 key2 ...
zunionstore 集合并集将数据存储到新的集合中(这里元素的score会作相加操作) zunionstore destination numkeys(集合个数) key1 key2 ...
zrank 获取数据对应索引 zrank key member
zrevrank 获取数据对应逆序索引 zrevrank key member
zscore score获取 zscore key member
zincryby score修改 zincryby key increment member
Redis可视化工具

如下为一款免费开源的Redis可视化工具,支持LInux,Windows,Mac多平台:

在这里插入图片描述


应用场景描述
如基本的登陆场景,服务端采用Nginx负载均衡技术,此时用户的session不能很好地共享,因为不能保证这个session在下次访问的服务器上一定存在。
解决的方案如下:

  • 存储到客户端cookie中: 安全性不足
  • session复制:重复的数据冗余,浪费了大量的存储空间
  • 使用redis:当用户第一次访问服务器时,将此时的用户session存储的redis数据库中,再次访问首先查询redis数据库

Redis发布和订阅

什么是发布和订阅?
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息
Redis客户端可以订阅任意数量的频道

建立两个Redis客户端

其中的客户端执行如下命令:

subscribe channel # 订阅者订阅频道为channel

在这里插入图片描述
再在另一个客户端执行以下命令:

 publish channel Hello # 发布者通过频道channel发布消息'Hello'

在这里插入图片描述

Jedis的简单使用

Jedis 是 Redis 官方首选的 Java 客户端开发包(关系同JDBC与MySQL的关系… )

事先一般

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值