首页 > 数据库 >Redis 缓存中间件 缓存数据库

Redis 缓存中间件 缓存数据库

时间:2024-07-31 15:55:13浏览次数:14  
标签:缓存 中间件 redis Redis 192.168 6379 integer mykey 11.144

Redis 缓存中间件 缓存数据库

nginx web服务
PHP 转发动态请求
tomcat web页面也可以转发动态请求
springboot 自带tomcat
所有的数据库不支持高并发,一旦访问量激增,数据库很快就会崩溃。
Redis 非关系型数据库 nosql not only sql 不仅仅是sql
键值对形式:
key value
数据的类型不是定义好的类型。根据自定义,系统自动识别。

Redis简介:

Redis 远程字典服务器
键值对
开源的,C语言写的nosql数据库。
Redis基于内存运行,所有的数据不是保存到硬盘,而是内存。
持久化: 定期或者人为的把数据保存到硬盘上

安装步骤:
yum -y install gcc gcc-c++ make
tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7/
ls
make -j 4
make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
/usr/local/redis/bin/redis-server
#4次回车,输入安装目录/usr/local/redis/bin/redis-server
ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
#70行加入自己本机的地址
/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 status
netstat -antp | grep 6379

Redis的优点:

1、极高的读写速度,读速度可以达到11万次/秒,写入:81000次/秒
2、支持丰富的数据类型,键值对可以定义多种数据类型 string list hash set
3、支持数据持久化,内存当中的数据保存到磁盘
4、原子性,Redis所有操作都是原子性。要么都成功,要么都失败。
5、支持主从模式和高可用模式(哨兵模式),以及集群。

Redis基于内存运行的数据库,缓存是最常应用场景。
排行榜
计数器
存储关系
实时分析记录,日志系统。

缓存的概念:

缓存是一种用于存储临时数据副本的技术。
目的:提高访问速度和性能。
缓存通常位于数据的访问路径上,数据的必经之路。可以在不直接访问原始数据的情况下,可以之间获取数据。

缓存应用场景:
1、web登录缓存
2、数据库缓存
3、对象缓存(大数据应用)

redis-cli -h 192.168.11.146 -p 6379
-h 指定地址
-p 指定端口 (必须加端口)
-a 指定密码 (没密码可以不加)

redis-cli 命令行工具
redis server start stop restart 控制redis
redis-benchmark 检测redis在本机的运行效率
redis-check-aof 修复AOF持久化的文件
redis-check-rbd 修复RDB持久化的文件

redis-benchmark -h 192.168.11.147  -p 6379 -c 100 -n 100000
向redis的主机模拟发送100个并发连接,同时发送100000个请求测试

redis-benchmark -h 192.168.11.146 -p 6379 -q -d 100
模拟存储100个数据包的性能测试
vim /etc/redis/6379.conf     #主要配置文件
70 监听端口配置
89 保护模式
93 端口配置
172 日志路径   /var/log/redis_6379.log
/etc/init.d/redis_6379 restart   #控制Redis状态

进入redis

[root@myslq4 utils]# redis-cli -h  192.168.11.147 -p 6379 -a 123456 
CONFIG SET requirepass ""   #无法重启故障解决

redis 数据库常用命令

1、基础数据类型:

string 字符串
list 列表型
hash 散列,键值对
set 集合,不重复的无序集合
zset 有序集合

创建键值对
set test1  10
获取数据
get test1
"10"
查看是否存在

(存在返回1,不存在返回0)

EXISTS test1
查看存在的键值对
keys *
查看类型
type test1
删除键值对
del test4 
del test1 test2
修改键值对名称
RENAME test1 FBB
设置登录密码
CONFIG SET requirepass 123456
auth 123456

CONFIG GET requirepass

redis-cli -h  192.168.11.146 -p 6379 -a 123456     #登录
1、string类型

string是redis的基础类型 ,最大能存储512MB的数据。
数字,图片等等都是默认string类型。

追加
192.168.11.146:6379> append FBB niu
(integer) 3
STRLEN FBB     查看长度
(integer) 12
自增、自减
192.168.11.146:6379> incrby   myket  10 自增   10          

192.168.11.146:6379> decrby    mykey 5     自减 5
设置生命周期
192.168.11.146:6379> SETEX mykey 15 hello   创建一个生命周期为15秒 key:mykey  value:hello  
移值到其他库
192.168.11.146:6379> get mykey
"10"
192.168.11.146:6379> move mykey 1    转移到目标库
(integer) 0
创建多个键值对
192.168.11.146:6379> mset  test1 1  test2 2  test3 3   #创建多个键值对
OK
192.168.11.146:6379> keys *
1) "test3"
2) "test2"
3) "test1"
192.168.11.146:6379> mget test1 test2 test3    
1) "1"
2) "2"
3) "3"
2、list类型
创建列表
192.168.11.146:6379> LPUSH mykey a b c d     创建列表
192.168.11.146:6379> LRANGE mykey 0 -1       查看列表全部信息
192.168.11.144:6379> LRANGE mykey 2 -1
1) "b"
2) "a"
192.168.11.144:6379> LRANGE mykey 1 2
1) "c"
2) "b"
插入数据
192.168.11.144:6379> LPUSHx mykey e      #插入新的(只能插入已存在的列表)从头插
(integer) 5
删除
192.168.11.144:6379> LPOP mykey    从头删除
指定删除
192.168.11.144:6379> lrem mykey 2 a    #删除两个a的值
查看元素数量
192.168.11.144:6379> llen mykey
(integer) 4
查看指定位置元素
192.168.11.144:6379> LPUSH mykey a b c d e f   #创建表(倒序排序)
(integer) 6
192.168.11.144:6379> LINDEX mykey  4    #查看指定值的信息
"b"
192.168.11.144:6379> LSET mykey 5 10    #替换指定的值
192.168.11.144:6379> LINSERT mykey  before  10 9   在10前加一个数值9
(integer) 7
192.168.11.144:6379> LINSERT mykey  after   10 9    在10后面加一个数值9
(integer) 7

192.168.11.144:6379> RPUSH mykey1 a b c d   #正序排序

3、hash 散列

用来存储对象,对象类别和ID构成一个键名
hash存储的空间很小,占用的内存和持久化后的磁盘空间都很少

hash是一个键值对,包含多个对象和对象的值。
myhash就是一个hash值,一个hash值可以存42亿个键值对。

创建
192.168.11.144:6379> hset myhash id1 1 id1  2 

添加hash值
192.168.11.144:6379> hsetnx myhash id3 3      (key不能和表中的重复)
(integer) 1
查看hash
192.168.11.144:6379> hset myhash qq 1 qq2 2 qq3 3 
(integer) 3
192.168.11.144:6379> HGET myhash qq
"1"
192.168.11.144:6379> hmget myhash id1 id2    #查看多个值

192.168.11.144:6379> hgetall myhash    #查看所有的key对应的值

192.168.11.144:6379> hkeys myhash      #只看key

192.168.11.144:6379> hvals myhash      #只看对象的值(value)
删除hash
192.168.11.144:6379> hdel myhash qq
4、set 无序集合

无序集合中元素类型只能是string,无序集合当中元素具有唯一性,不允许重复
**应用场景:**可以使用set数据,追踪唯一性的数据,比如ip地址,或者根据客户的id区分不同客户购买的同一产品。

创建
192.168.11.144:6379> sadd myset a b b c
(integer) 3
查看集合元素
192.168.11.144:6379> smembers myset
1) "b"
2) "a"
3) "c"
添加值
192.168.11.144:6379> sadd myset a d  e 
(integer) 2
获取集合元素数量
192.168.11.144:6379> scard myset
(integer) 5
随机获取
192.168.11.144:6379> srandmember myset
删除
192.168.11.144:6379> spop myset           随机删除
"b"
192.168.11.144:6379> srem myset   a       指定删除一个
(integer) 1
192.168.11.144:6379> srem myset   e  c     指定删除多个
(integer) 2
不同集合元素移动
192.168.11.144:6379> smove    myset   myset2       d 
                            移出集合   移入集合  需要移出的值
 (integer) 1
5、 zset 有序集合

元素类型都是string类型,元素唯一,不能重复
每个元素都会关联一个doublel类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同。

创建
192.168.11.144:6379> zadd myzet 1 "one"    
(integer) 1
192.168.11.144:6379> zadd myzet 2 "two"
(integer) 1
192.168.11.144:6379> zadd myzet 3 "three"  4 "four"
(integer) 2
排序
192.168.11.144:6379> zrange myzet 0 -1 withscores    #按照权重大小进行排序
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"

查看
192.168.11.144:6379> zrange myzet 0 -1     #集合内对象
1) "one"
2) "two"
3) "three"
4) "four"
192.168.11.144:6379> zrangebyscore myzet 2  5    获取权重在2--5之间的值   2<=x<=5
1) "two"
2) "three"
3) "five"
4) "four"

删除

192.168.11.144:6379> zrem myzet "one"
(integer) 1

标签:缓存,中间件,redis,Redis,192.168,6379,integer,mykey,11.144
From: https://blog.csdn.net/qq_52448810/article/details/140825158

相关文章

  • 实现一个简单的redis分布式锁
    分布式锁一般有三种实现方式:1.数据库乐观锁;2.基于Redis的分布式锁;3.基于ZooKeeper的分布式锁。 为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解......
  • 如何安装缓存的库?
    是否可以制作pip保存包而不是每次都下载它们?或者这会占用太多磁盘空间吗?是对的,每次使用pip安装软件包时,默认情况下都会下载它们,即使之前已经安装过它们也是如此。这可能会很慢,并且会浪费带宽。好消息是pip提供了一种缓存下载软件包的机制,这样就不......
  • go高并发之路——消息中间件kafka(上)
    一般高并发的业务都是某个时间段的请求量特别大,比如本人负责的直播业务,基本上一天就两个高峰段:早上和晚上的特定时间段。其它的时间里,流量基本都比较平稳。那么面对流量高峰,我们可以采取哪些措施呢?常见的有服务器和DB提前扩容、监控告警(盯监控)、流量削峰、加缓存、网关限流、服务......
  • redis基础
    下面资料来自黑马程序员-整理课程内容Redis入门Redis数据类型Redis常用命令在Java中操作Redis1.Redis入门1.1Redis简介Redis是一个基于内存的key-value结构数据库。Redis是互联网技术领域使用最为广泛的存储中间件。官网:https://redis.io中文网:https://www.redis.n......
  • [Redis]哨兵
    这次聊聊,Redis的哨兵机制。为什么要有哨兵机制?在Redis的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节......
  • go-zero 自定义中间件的几种方式
    目录1.通过api文件生成并填入具体逻辑定义api生成对应的模板填充中间件逻辑2.在server启动前完成中间件的注册定义中间件:注册到server中首先go-zero已经为我们提供了很多的中间件的实现,但有时难免有需求需要自定义,这里介绍几种自定义的方法,供参考。1.通过api文件生......
  • java @Cacheable生成的redisKey,出现两个连续的冒号::
    1、参考基于redis2.1.6实现springcache生成的key多出一个冒号2、解决需要对key进行处理,【重点】是computePrefixWith方法config=config.computePrefixWith(cacheName->{returncacheName+StrUtil.COLON;});以下是完整代码实现CacheK......
  • Docker中使用自定义网络方式实现Redis集群部署与测试流程
    场景Docker中Docker网络-理解Docker0与自定义网络的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458参考上面的流程实现自定义网络的实现。下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。注:博客:https://blog.csdn.net/badao_......
  • Linux安装redis(超级详细)
    持续关注我,我将分享一个网站完整的搭建过程!序号内容链接1linux安装jdk1.8https://blog.csdn.net/weixin_43836859/article/details/1404782392linux安装mysql5.7https://blog.csdn.net/weixin_43836859/article/details/1406272333linux安装redishttps://blog.csdn.net/we......
  • redis持久化
    除了正常服务以外,数据量的扩容,数据安全也属于高可用的范畴之内。实现redis高可用的方式1.持久化 最简单的高可用方法,主要功能就是备份数据。即把内存当中的数据保存到硬盘当中。2.主从复制3.哨兵模式4.redis的集群持久化概念是把内存当中的数据保存到硬盘当中。开启持......