redis使用

一.redis介绍和使用

1.数据库分类

关系型数据库

       大型     oracle    db2                            生或中项目   微信   qq   淘宝   京东   抖音                       存储量大                        而且访问速度也比较快                        有专人来维护拟购买的服务                        缺点:收费                        国企   大型还联网公司         中型      mysql                        开源免费                        处理千万级别数据                        mysql                                  sqlserver---winsows系统兼容性很好  性能较高               系统兼容型   服务器操作系统                        linux      centos      readhat        unbntu                        windows

小型

非关系型数据库

(1)数据库瓶颈

用户表

  100     1000      变慢     10000    变慢     100000  变量     1000000    1000000000

当数据库遇到瓶颈 存储瓶颈 磁盘空间不足 扩充磁盘

查询效率效率也会遇到瓶颈

加索引        升级硬件        做缓存---将数据库热点数据缓存到内存当中

关系型数据库限制性比较大

设计好以后 项目也开发好 项目能正常使用

      一旦改表结构:成本很高

(2)非关系型数据库

优点: 查询写入速度非常高 基于内存存储的

存储方式   key              value   userkey      用户集合    json

mongodb—文档结构的存储 mamcache

2.什么是redis为什么需要redis

redis是比较常见的一种非关系型数据库 是多数项目都在用的一种非关系型数据库

基于key value的结构进行数据存储

每秒的读写速度极快

数据存储基于内存,并且支持持久化

为什么要选用redis?

1.免费开源

2.基于key value进行存储

查询快

支持存储的数据类型相对灵活

支持五种数据类型

3.基于内存存储

速度快

而且支持持久化不用担心数据的安全

4.特性

设置key 值可以指定生命周期到期后自动清除内存当中数据

redis可设置占用内存最大空间

5.兼容性比较好

支持各种主流操作系统


二.redis的安装和使用

1.linux命令回顾

img

2.centos环境下安装redis

参考文档: https://blog.csdn.net/a_rain2333/article/details/119567362

(1)安装gcc环境

yum  install  -y    gcc

(2)下载linux安装包

  cd  /soft  进入自己创建的目录  wget https://download.redis.io/releases/redis-6.2.5.tar.gz  会联网将redis-6.2.5.tar.g  下载到soft目录

(3)解压下载的redis安装包

tar  -zxvf   redis-6.2.5.tar.gz

(4)移动解压的redis目录到 usr/local/redis

 mv  /soft/redis-6.2.5   /usr/local/redis

(5)进入usr/local/redis

make  编译make PREFIX=/usr/local/redis install  安装

img

(5)进入bin目录

img

(6)启动redis服务

进入bin   ./redis-server

img

看到上面界面代表代表服务启动成功

(7)使用客户端测试是否可以正常连接redis服务

img

3.修改redis配置 使用自定义配置启动redis

启动方式

1.进入redis的bin目录

./redis-server

2.自定启动脚本

3.使用自定义配置启动redis

redis配置项

连接方式

redis服务启动后

1.进入bin ./redis-cli 子当前电脑连接

2.在其他任意链接连接服务器redis

支持远程连接

安装redis客户端

使用第三方数据库管理工具

使用自定义配置启动redis

(1)准备配置文件

再redis安装目录找到 redis.conf 进入etc 新建 redis目录 将/usr/local/redis.conf 拷贝到 /etc/redis/redis.conf

(2)使用自定义配置文件启动redis

#进入redis  bin目录 cd   /usr/local/redis/bin/#使用自定义配置启动redis./redis-server  /etc/redis/redis.conf

(3)配置项说明

1.daemonize no

是否以守护进程方式启动redis服务 no不 yes是

2.port

redis默认启动端口

3.database

16 默认redis创建的数据库的个数

每一个数据库当中可以放不同的数据

数据库的名称以序号排除

4.dbfilename dump.rdb

持久化到磁盘当中的数据文件

5.dir ./

数据持久化文件的存储目录

6.配置redis的远程连接

bind 0.0.0.0 -::1

7.设置连接密码

requirepass root123

8.pidfile

线程id pidfile /var/run/redis_6379.pid

9.配置redis日志生成路径

logfile “/usr/redis/log/redis.log”

(4)改完配置重启redis

 ./redis-server  /etc/redis/redis.conf

(5)在其他电脑测试连接redis

下载安装redis客户端软件

img

img

img

img

要确保

主机ip

密码和端口都正确

一.Redis基础知识讲解

传统数据库当中

数据以表的方式存储

需要掌握数据库的sql才能对数据表做操作

redis

key ——— 表名

value ——- 数据

需要掌握redis命令,才能对redis做增删改查的操作

1.简单命令

PING

测试是否可以正常连接REDIS PONG 代表可以正常连接

KEYS *

列出当前数据库当中所有的KEY

INCR

Incr key(名字) 如果redis当中有这个key就会对里面的值自增1 没有这个key就会创建这个key将值设为1

SELECT 0-15

切换数据库命令

DEL KEY

删除指定的key 删除成功返回1 删除失败返回0

在redis当中 key严格区分大小写

GET KEY

查看KEY 值

FLUSHALL

清空数据库当中所有的KEY

EXISTS KEY

校验KEY 是否存在 存在 1 不存在 0

KEYS key的名称

过滤查看key

keys 完整名称 查看这个key

? 所在位置匹配任意一个字符

  • 匹配任意多个任意字符

    [ab] 过滤字符是中括号里面规定的字符

    过滤出以NUM A或B或C 任意


2.redis中的数据类型

案列:设计博客论坛系统数据存储

(1)字符串类型

SET KEY(名称)

存储字符串值

GET KEY(名称)

获取字符串值

当获取的Key

不存在

会返回NULL

博客论坛系统注册的用户名改怎么存储?

关系型数据库设计

博客用户表

id用户名
1zhangbo
2liyongguang
3wumingze

SELECT * FROM USER WHERE ID=1 根据Id获取账号信息

redis中的设计

用户名不允许重复用户必须有唯一标识

key怎么设计

id值: incr blog_userAccount_Id 用来作为用户的ID标识

bloguserAccountid值 账号名 存储账号信息

博客文章如何设计

id文章标题文章内容文章简介文章发布日期
1java8新特性是否积分计算定积分的书法家sadaf2020-04-04 15:23:12
2java爬虫撒发射点更多的是如果sdfdsf2021-01-19 12:00:12
3java并发编程相关sfdsdfgdthdsgaedfdfhffhgdgfssgfgf2012-10-14 13:00:34

redis中设计

blog*post*文章id 文章key

{          title:'java8新特性',          content:'是否积分计算定积分的书法家',          detail:'  sadaf',          createTime: '2020-04-04 15:23:12'}{          title:'java爬虫',          content:'撒发射点更多的是如果',          detail:'sdfdsf',          createTime: '2021-01-19  12:00:12'}     10000篇文章的存储     blog_post_title_1    java8新特性     blog_post_content_1  是否积分计算定积分的书法     blog_post_detail_1   sadaf     blog_post_createTime_1  2020-04-04 15:23:12     blog_post_title_2    java8新特性     blog_post_content_2 是否积分计算定积分的书法     blog_post_detail_2   sadaf     blog_post_createTime_2  2020-04-04 15:23:12     散列      10000key     josn      10000key     单独定义key存储列         40000key

img

命令补充

incrby key 递增量 地增量是多少 每次就递增多少

decr 递减

decrby 递减量

(2)散列

散列时适合用来存储对象结构的数据

HSET KRY 字段名 字段值 字段名 字段值

HGET KEY 字段名 获取散列中的指定字段的值

HMSET 一次设置多个列和值

HMGET 一次获取多个列的值

HGETALL 一次获取所有的列和值

HEXISTS 查看散列中是否存在指定的列 有 返回1 没有返回0

HDEL 删除散列中无值空列

HKEYS 获取散列中所有Key

HVALS 获取散列中所有值

(3)列表

关系型数据库

id文章标题文章内容
1java基础s豆腐干大概好久会议通过如风
2java分布式sdfghjkhgfdsa
3Spring框架dfghyuiyjtgrewq

新增文章:

id 可以自动增长 —无论成功失败都不会的数据查询造成影响

删除文章

:

delete from blog_post where id=2 第二篇文章

redis中的设计

blog_post_id 记录现在存了多少篇文章

blog_post_1 第一篇

blog_post_2 第二篇

插入一篇新的文章

blog_post_id +1 blog_post_3 —成功 blog_post_id -1

blog_post_3

插入数据需要根据数据是否存入成功 来判断 blog_post_id 是否需要增加

blog_post_id 作用

新增文章根据id设置新的文章的id

标识数据库当中现在有多少篇文章

查看文章列表

先要知道有多少篇文章

for(int x=1;x<=blog_post_id;x++){

HGETAll blog_post_x

}

删除文章

del blog_post_1 删除文章

将关联的 文章的id的key 减去一个1

文章删除成功—-将文章的id的key 值减去1 由于一些原因导出没有减成功

电脑断电—网络波动

文章的id使用递增量存在以上问题,该怎么解决?k考虑使用列表?

Redis的列表和Java当中的集合很类似

数据可以向两端进行存储 左端和右端

越靠近两端数据查询速度越快—-即使列表中有千万级别的量的数据只要数据存储的靠近两端依然可以很快就能 找到

量大的时候查根据索引找列表中间的元素会比较慢

常用命令

LPUSH KEY VALUE

向列表左端添加元素

RPUSH KEY VALUE

向列表右端添加元素

LPOP KEY

从列表的左端弹出第一个元素 取出数据的同时会将该数据从列表移除

LLEN

查看列表中有多少条记录

LRANGE KEY start end

读取列表中指定区间内的数据

LREM KEY 正值(左边数第几个)|负值(右边数第几个) 删除的列表当中指定的值

0 —删除所有指定值的元素

优化文章关联的id 的健

blog_post_id 记录现在有多少篇文章 5

blog_post_1 blog_post_2 blog_post_4 blog_post_5

blog_post_3—-被删掉文章

del blog_post_3

decr blog_post_id 4

for(int x=1;x<=4;x++){

HGETALL blog_post_x

}

用列表类型存储文章关联的id

新增文章时文章的id 是 列表中最近存入的第一个元素的值+1

删除文章同时—-将列表中关联的id值也删掉

使用列表存储id值是可以重复的—要想避免这个问题—向列表中存数据时需要判断列表中是否有该数据

真实的场景当中列表适合用来存储什么样的数据?

存储可以重复的数据?

查两端的数据快?

聊条记录

热点信息?—-热点信息每天都在变存储到列表中可以提高潮汛速度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值