redis--1

ThinkPHP5.1中使用Redis来缓存 问题 在thinkphp5.1项目中需要引入Redis,安装redis后在tp5.1写入相关的操作代码后却一直报错,可能出现的问题如下: 1. 安装不正确,即redis没正常运行 2. 没有添加php_redis驱动扩展 3. php.ini修改位置不正确 4. tp5.1中配置代码不正确 解决方案 首先检查在GUI界面下是否能够连接到Redis,如果不能则要检查R... 阅读详情

redis学习第一章

安装

linux下安装redis。redis命名规则,redis约定次版本号为偶数的是稳定版本(2.8,3.0),次版本号为奇数的为非稳定版本(2.7,2.9)。

wget http://download.redis.io/redis-stable.tar.gz//下载稳定版本
tar -zxvf redis-stable.tar.gz//解压
cd redis-stable
make && make install //直接编译安装
make test //测试

编译安装完成之后,执行测试,可能遇到的问题

  1. You need tcl 8.5 or newer in order to run the Redis test
//安装tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz
cd /tcl8.6.1/unix/
./configure
make && make intsall
make test

启动和停止

如果在编译后执行了make install 命令,这些程序会被复制到/user/local/bin目录内,所以在命令行中直接输入程序名称即可执行,redis可执行文件说明:

文件名说明
redis-serverredis服务器
redis-cliredis命令行客户端
redis-benchmarkredis性能测试工具
redis-check-aofAOF文件修复工具
redis-check-dumpRDB文件检查工具
redis-sentinelSentinel服务器(仅在2.8版以后)
  1. 启动redis
    启动redis有直接启动和初始化脚本启动,两种方式,分别适用于开发环境和生产环境。
    redis的默认端口为6379,不过可以通过redis-server -p 6380 这种形式来自定义端口号。ps:值得一提的是6379是手机键盘上,MERZ对应的数字,Merz(Alessia Merz)是一名意大利歌女的名字,并且长期以来都被Antirez极其朋友视作愚蠢的代名词(有点侮辱性)
    1).直接启动
    直接运行redis-server就可以启动redis
    2).通过初始化脚本启动redis
    在生产环境中推荐使用此方法运行redis,在redis源代码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件。我们需要配置redis的运行方式和持久化文件、日志文件的存储位置等,具体步骤如下:
    1). 配置初始化脚本,配置初始化脚本,首先将/redis-stable/utils/redis_init_script文件复制到/etc/init.d目录中,文件名为redis_端口号,该端口号表示要让redis监听的端口号,客户端通过该端口连接redis。然后修改脚本中的REDISPORT变量为该端口号。
    2).建立需要的文件夹。
    /etc/redis 存放redis的配置文件
    /var/redis/端口号 存放redis的持久化文件
    3).修改配置文件。首先将配置文件模板(redis-stable/redis.conf)复制到/etc/redis目录中,以端口号命名,然后对其参数进行编辑
    deamonize参数修改为yes 使redis以守护进程模式运行
    pidfile参数修改为/var/run/redis_端口号.pid 设置redis的pid文件位置
    port参数修改为端口号 设置redis监听的端口号
    dir参数修改为/var/redis/端口号 设置持久化文件存放位置

ps:添加开机自启动,在/etc/init.d/下 systemctl enable redis_端口号

  1. 停止redis
    考虑到redis有可能正在将内存中的数据同步到硬盘中,强行终止redis进程可能会导致数据丢失,正确停止redis的方式应该是向redis发送SHUTDOWN命令,方法为:
    redis-cli SHUTDOWN
    ps: redis-cli -h 127.0.0.1 -p 6379 (-h -p 自定义地址和自定义端口)
    当redis收到SHUTDOWN命令后会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出,redis可以妥善处理SIGTERM信号,所以使用kill Redis进程的PID也可以正常结束redis,效果与发送SHUTDOWN命令一样

什么是redis

redis(REmote DIctionary Server 远程字典服务) 由意大利的一个创业公司开发,开发者Salavtore Sanfilippo
redis的特性

  1. 存储结构->字典(或称映射、关联数组),键值对的形式存储
    键值的数据类型->
    字符串类型 set/get
    散列类型 hset/hget
    队列类型 lpush/lpop
    集合类型 sadd/smembers
    有序集合类型 zadd/zrange

  2. 内存存储于持久化
    redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势,在一台普通的笔记本电脑上,redis可以再一秒内读写超过10w个键值对
    同时redis还提供了将内存中的数据异步写入到硬盘,同时不影响继续提供服务

  3. 功能丰富
    redis是作为数据库开发的,提供了丰富的功能,越来越多的人将其用作缓存、队列系统等。redis可谓是名副其实的多面手

    redis可以为每个键设置生存时间(Time To Live TTL),生存时间到期后键会自动被删除,这一功能配合出色的性能让redis可以作为缓存系统来使用。

    作为缓存系统,redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰掉不需要的键

    redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易地实现一个高性能的优先级队列。同时在更高层面上,redis还支持"发布/订阅"的消息模式,可以基于此构建聊天室等系统

  4. 简单稳定

初步使用redis

  1. 基础命令
    1).KEYS pattern
    pattern 支持glob风格通配符
符号含义
?匹配一个字符
*匹配任意个字符
[]匹配括号间的任一字符,可以使用“-”符号表示一个范围,如a[b-d]可以匹配“ab”、“ac”、“ad”
\转义字符

注意:keys命令会遍历redis中所有的键,当键的数量较多时会影响新能,不建议生产环境中使用;redis命令不区分大小写
2). 判断一个键是否存在EXISTS key
如果键存在则返回整数类型1,否则返回0,例如:
redis > EXISTS bar
(integer) 1
redis > EXISTS noexists
(integer) 0
3).删除键DEL key [key ...]
可以删除一个或多个键,返回值是删除的键的个数。例如:
redis > DEL bar
(integer) 1
redis > DEL bar
(integer) 0
第二次执行DEL命令时因为bar键已经被删除了,实际上并没有删除任何键,所以返回0

技巧:DEL命令的参数不支持通配符,但我们可以结合linux的管道和xargs命令自己实现删除所有符合规则的键,比如要删除所有以"user:"开头的键,就可以执行redis-cli KEYS “user:*” | xargs redis-cli DEL。另外由于DEL命令支持多个键作为参数,所以还可以执行 redis-cli DEL "redis-cli KEYS “*”"来达到效果,而且性能更好,该方法是讲明了作为redis-cli参数来进行的

  1. 字符串类型
    字符串是redis种的基本数据类型,一个字符串类型键,允许存储的数据的最大容量是512m。
    1).赋值与取值
set key value 
get key

SET和GET是redis中最简单的两个命令,实现基本的读写功能。如设置键为key 值为hello的键值对
redis > set key hello
OK
获取键值
redis > get key
“hello” //当键不存在时返回空结果

  1. 递增数字
INCR key

字符串类型可以存储任何形式的字符串,当存储的字符串为整数时,redis提供了一个实用的命令INCR,其作用是让当前的键值递增,并返回递增后的值,用法为:
redis > incr num
(integer) 1//当操作的键不存在时,默认的键值为0
redis > incr num
(integer) 2
当键值不是整数时redis会提供错误(即使是浮点类型的)
Q:为什么不自己写get和set来实现递增incr函数?
A:因为如果连接redis的同时有多个客户端,同一时间多个客户端发起该请求,那么可能会出现竞态条件(竞态条件 race condition 指一个系统或进程的输出,依赖于不受控制的事件的出现顺序或出现时机),比如两个客户端A和B都要执行自定义的incr函数,当他们执行到get时都获得了该num为2,递增后使num变为了3,可是执行了两次,我们的期望应该是4,这就出现问题了。所以使用redis的INCR命令在内的所有命令都是原子操作,无论多少客户端连接都不会出现上述情况。(当然还可以通过事物和脚本实现自定义原子操作)

Redis命令行客户端

  1. 通过redis-cli向redis发送命令的方式有两种:
    第一种:将redis-cli作为参数执行,比如reids-cli SHUTDOWN,redis执行时会自动按照默认配置(服务器地址为127.0.0.1,端口号为6379)连接redis,通过-h和-p参数可以自定义地址和端口
    redis-cli -h 127.0.0.1 -p 6379
    redis-cli PING
    第二种:不附带参数运行redis-cli,这样会进入交互模式,可以自由输入命令,例如
    redis-cli
    redis 127.0.0.1:6379>PING
    PONG
    这种方式要在输入多条命令比较方便

  2. 命令返回值
    1).状态回复(status reply)
    状态回复是redis里最简单的一种回复,如向redis发送set命令设置某个键的值时,redis会回复状态ok表示设置成功。
    2).错误回复(error reply)
    当出现命令不存在或命令格式有错误等情况时Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如执行一个不存在的命令:
    redis > ERRORCOMMEND
    (error) ERR unknow command ‘ERRORCOMMEND’
    注意:在2.6版本时,错误信息均是以“ERR”开通,而在2.8以后,部分错误信息会以具体的错误类型开头,如:
    redis > LPUSH key 1
    (integer) 1
    redis > GET key
    (error)WRONGTYPE Operation against a key holding the wrong kind of value
    3).整数回复(integer reply)
    Redis 虽然没有整数类型,但是却提供了一些用于整数操作的命令,如递增键值的INCR命令会以整数形式返回递增后的键值。除此之外,一些其他命令也会返回整数。如可以获取当前数据库中键的数量DBSIZE命令等。整数回复以(integer)开头,并在后面跟上整数数据
    4).字符串回复(bulk reply)
    字符串回复是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:
    redis>GET foo
    “1”
    5).多行字符串回复(multi-bulk reply)
    该回复同样很常见,如当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:
    redis > KEYS *
    1). “bar”
    2). “foo”

  3. 配置
    由于配置选项较多,通过启动参数这些选项并不方便,所以Redis支持通过配置文件来设置这些选项。启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server,如:
    redis-server /path/to/redis.conf
    通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,如:
    redis-server /path/to/redis.conf --loglevel warning
    redis提供了一个配置文件的模板,位于源代码目录的根目录中。
    除此之外还可以在redis运行时通过CONFIG SET命令在不重新启动redis的情况下动态修改部分redis配置。如:
    redis>CONFIG SET loglevel warning
    OK
    同时使用CONFIG GET命令可以获得当前redis配置的情况,如:
    redis > CONFIG GET loglevel
    1). “loglevel”//选项名
    2). “warning”//值

  4. 多数据库
    每个数据库对外都是一个从0开始的递增数字命名的,redis默认支持16个数据库,可以通过配置参数database来修改这一数字。客户端和redis建立连接后会自动选择0号数据库,不过可以随时使用select命令更换数据库。
    redis不支持自定义数据库名称,开发者必需自己记录哪些数据库存储了哪些数据。
    redis不支持为每个数据库设置单独的访问密码,因此一个客户端要么可以访问全部数据库,要么连一个数据库都不能访问。
    多个数据库之间并不是完全隔离的,比如FLASHALL命令可以清空一个redis实例中所有数据库中的数据。不同的应用不建议存储在一个redis实例中。由于redis非常轻量级,一个空redis实例占用内存只有1mb左右,所以不用担心多个redis实例会额外占用很多内存。

yii1.0框架默认缓存由memcache改为redis 由于业务发展原因,原有memcache(以下均称mem)缓存负载过高,所以需要把默认数据缓存由mem改为redis,并且旧redis也要迁移 原有mem配置共计5台,权重均等. //memcache 缓存 'cache' => array( 'class' => 'system.caching.CMemCache', ... 阅读详情

相关推荐

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

redis-7

redis学习第七章 集群 复制 通过持久化功能,redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器已然可以继续提供服务。为此,redis提供了复制(replication...

actor8的博客 420

关于Oxford Radar RobotCar Dataset的学习笔记

https://oxford-robotics-institute.github.io/radar-robotcar-dataset/documentation 简介 雷达是 Navtech CTS350-X 调频连续波 (FMCW) 扫描雷达,在所使用的配置中提供 4.38 cm 的距离分辨率和 0.9 度的旋转分辨率,范围高达 163 m,同时提供对天气条件的稳健性这可能会给其他传感器模式带来麻烦。在其他配置中,Navtech CTS350-X 可以提供超过 650 m 的范围和更高的旋转速度。然而,对

禾烁的博客 5297

redis获取所有的keys报ERR unknown command `KEYS`

redis.clients.jedis.exceptions.JedisDataException: ERR unknown command `KEYS`, 服务端禁止了 local.keys("*")

weixin_47303317的博客 6604

[后端设计]innovus命令editPin详解?

先放命令,有空慢慢写。

m0_61003348的博客 5733

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 505

redis集群搭建以及Yii1.1连接redis集群

本来博客搭建在自己的服务器上,不知道多久没有维护和更新后,再一看域名都需要重新备案了。介于本人的“懒惰性”,还是迁过来不浪费资源了。 最近搭建一个业务,号称每秒响应需要1W次请求,然后LZ各种折腾php、mysql和nginx配置。最后放弃mysql使用redis单机版,最后的最后使用redis集群。 1、生产环境 ubuntu16.04 redis-3.0.7 内网机器IP:1

landrain的博客 2212

MATLAB双目相机标定:从工具箱实战到参数精解

本文详细讲解了使用MATLAB进行双目相机标定的完整实战流程与参数精解。从拍摄合格的棋盘格图像、设置关键参数(如径向畸变系数),到分析重投影误差、优化结果并正确导出和使用内外参,提供了从操作到原理的全面指导,帮助读者为立体视觉应用奠定精准基础。

weixin_29041767的博客 259

redis db0 db1 linux

我整理的一些关于【Linux】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/xltfov实现 Redis 数据库的操作:db0 和 db1 在现代应用开发中,Redis作为一种高效的内存数据库,广泛用于缓存和数据存储。本文将详细介绍如何在Linux环境下使用Redis,并实...

weixin_40443794的博客 524

路由工具之策略路由policy-based-routing、MQC三板斧流分类、流行为、流策略

PBR(Policy-Based Routing,策略路由)策略路由可理解为控制路由,因为PBR策略的优先级高于传统路由表的转发,所以它主要用于影响数据包转发的技术。

Hades_Ling的优快云博客 5582

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2584

redis类型 tp5_tp5.1中redis使用

一、环境安装1、下载redis,igbniaryhttps://windows.php.net/downloads/pecl/releases/igbinary/https://windows.php.net/downloads/pecl/releases/redis/phpinfo.php中查看自己的版本信息,下载对应的版本2、拷贝文件把php_redis.dll,php_redis.pdb,p...

weixin_39832727的博客 162

08 RK3568 MAC TO MAC直连 RTL8367S mdio

本文:采用rk3568 gamc0 通过rgmii直连 交换芯片的mac口 通信方法为mdio。

qq_39451352的博客 3476

redis thinkphp5.1_ThinkPHP5.1使用redis缓存

ThinkPHP5.1使用redis缓存,缓存,前缀,有效期,全局,这一ThinkPHP5.1使用redis缓存易采站长站,站长之家为您整理了ThinkPHP5.1使用redis缓存的相关内容。ThinkPHP框架已经封装好redis驱动,不管是session还是cache都支持redis驱动,下面我们来了解一下在ThinkPHP5.1版本下如何使用redis缓存。配置:/config/cache...

weixin_42549037的博客 380

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

M1 MacBook安装redis

M1 MacBook Pro安装redis 1.下载安装包 前往Redis官网https://redis.io/download下载.tar.gz的安装包 以下以redis-6.2.0.tar.gz为例 2.安装(建议:/Library/Redis/ ) 2.1创建安装文件夹 2.1.1方法一:打开终端 cd /Library sudo mkdir Redis 输入密码 cd Redis 2.1.2方法二:图形界面操作 右键访达 前往文件夹/Library 创建Redis文件夹 进入Redis文件夹

weixin_44142075的博客 9964

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ThinkPHP5.1使用Redis

安装php redis扩展可以参考另一篇博客 这里将两种方式 1.use think\Facade\Cache; 使用这种方式需要修改app\config\cache.php 最后的效果 port,expire根据自己实际情况修改,这里只是作为例子 写一个方法 注意use的是think\Facade\Cache ,如果use think\Cache,会提示Cache没有静态方法store...

weixin_40208575的博客 4004

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring Data Redis 1.1 RC1(Release Candidate 1)是 Spring Data 项目中 Redis 模块的一个早期候选版本

- 改进 `RedisTemplate` 和 `StringRedisTemplate` 的 API 一致性与易用性; - 引入 `RedisCallback` 和 `SessionCallback` 更灵活的底层操作抽象; - 提升连接工厂(如 `JedisConnectionFactory`)的配置灵活性和线程安全性; - 初步支持 Redis Sentinel(高可用)的自动故障转移配置(需配合相应连接池与客户端版本)。

[Blog][Domain] programb.blog.youkuaiyun.com 344

Mac M1下Docker 安装 Redis

Docker 安装 Redis 1、Redis镜像拉取,最新版本的镜像 启动Docker,打开终端输入命令:docker pull redis:latest 耐心等待拉取完毕。 2、查看本地镜像,Redis是否下载成功 命令:docker images 3、运行启动Redis容器 命令:docker run -itd --name redis-test -p 6379:6379 redis 参数说明: --name:后面的是容器的名字; -p 6379:6379:映射容器服..

github_39581355的博客 2998

redis 原子加1 java

redis相关学习资料:https://edu.51cto.com/video/4196.htmlRedis 原子加1 Java 实现指南 作为一名刚入行的开发者,你可能会遇到需要在Redis中实现原子操作的需求,比如对某个计数器进行加1操作。本文将指导你如何使用Java实现Redis的原子加1操作。 操作流程 首先,让...

weixin_37018984的博客 417

macm1安装redis过程

macm1安装redis过程

qq_23858785的博客 1326

mac m1 如何查看redis是否安装

我整理的一些关于【Redis,redis,版本信息】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnN在解析如何查看 Redis 是否在 Mac M1 上安装的过程中,我们将通过一系列步骤为您提供一个清晰的指导,同时还会给出相关的代码示例。此文还会在最后以流程图的形...

weixin_40745152的博客 479

【Redis】.net core 3.1 Redis安装和简单使用

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

小5聊的博客 2603

TP5.1使用Redis以及Windows配置Redis环境(超详细0难度)

Redis是典型的NoSql(非关系型数据库)之一,他是一个高性能的Key-Value数据库。它支持数据的持久化,官方测试读的速度是110000次/s,写的速度是81000次/s ,由于Redis提供了键过期的功能,所以现在被广泛用于缓存,合理运用缓存不仅可以提升站点访问速度还可以大幅降低数据库压力。 下面我会从0开始讲解如何在你的Windows下配置好Redis环境 以及Redis在TP5.1...

Sol的博客 3533

redis thinkphp5.1_ThinkPHP5.1中使用redis缓存

ThinkPHP框架已经封装好redis驱动,不管是session还是cache都支持redis驱动,下面我们来了解一下在ThinkPHP5.1版本下如何使用redis缓存。配置:/config/cache.phpreturn [// 驱动方式'type' => 'File',// 缓存保存目录'path' => '',// 缓存前缀'prefix' => '',// 缓...

weixin_36347133的博客 582

TP5.1+redis

我使用的是宝塔面板 nginx 首先确认当前项目使用的php版本 然后点开当前版本PHP,安装扩展里面安装redis 注:只能安装在一个PHP版本里面(不可存在多个版本PHP中) config文件夹下面的 cache.php <?php // +-------------------------------------------------------------------...

channel)海峡的博客 2221
上一篇: centos7 github使用记录
下一篇: redis--2
actor8
博客等级 码龄11年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值