当前位置: 首页 > 后端技术 > PHP

Redis问答

时间:2023-03-29 17:27:42 PHP

什么是Redis?基于内存的客户端和服务端NoSQL非关系型数据库redis的应用场景是什么?如何安装redis用于缓存队列数据的持久化存储?如何开始?如何关闭?客户端如何启动?下载、解压、编译、安装wgethttp://download.redis.io/releases/redis-4.0.1.tar.gztar-xzvfredis-4.0.1.tar.gzcdredis-4.0.1makecdsrcmakeinstallPREFIX=/usr/local/redisredis服务启动cd/usr/local/redis/bin./redis-server注意,这种方式启动redis使用的是默认配置。通过启动参数告诉redis使用指定的配置文件。使用以下命令启动./redis-serverredis.confredisserviceshutdowncd/usr/local/redis/bin./redis-clishutdown./redis-cli-h127.0.0.1-p6379shutdown#指定端口和主机redisclientstartcd/usr/local/redis/bin./redis-cliexitclient:quit如何创建一个shell脚本来管理redis服务?如何让redis服务自动启动?创建shell脚本开启、关闭、重启redis服务REDIS_SERVER="/usr/local/redis/bin/redis-server"REDIS_CONF="/usr/local/redis/etc/redis.conf"REDIS_CLIENT="/usr/local/redis/bin/redis-cli"start(){$REDIS_SERVER$REDIS_CONF}stop(){$REDIS_CLIENTshutdown}restart(){stopstart}case"$1"in'start')start;;'停止')停止;;'重启')重启;;*)echo'无事可做';;esac添加服务为自启动如何调整redis.conf配置地方?设置为后台启动:daemonize是常用的五种数据结构Stringkey-value结构,key是字符串,value可以存放字符串,整数,浮点数Listkey-value结构,但是value是数组,里面存放的是value可以重复,但是OrderedHashkey-value结构,但是value是一个数组,里面存放的value也是一个key-value结构,key是唯一的Setkey-value结构,和List很像,value也是一个数组,并且里面存放的value不能重复,而是Sortedsetkey-value结构,但是value是一个数组,里面存放的value是score-value-rank结构,rank是一个隐藏值(redis自动维护的),value是唯一,只能修改分数如何在PHP中安装redis扩展?下载phpredis插件wgethttps://codeload.github.com/phpredis/phpredis/tar.gz/3.1.4使用phpize工具生成configure文件php安装目录/bin/phpize生成Makefile文件./configure--with-php-config=/usr/local/php/bin/php-config编译安装make&&makeinstallloadredis.sofileinphp.iniextension=redis.so如何使用phpredis扩展来操作redis?注意:phpredis的类都在根命名空间下,使用phpredis类时,尽量在开头添加/connect$redis=new\Redis();$redis->connect('127.0.0.1',6379);操作String$redis->set('key1','val1');$val=$redis->get('key1');//'val1'$redis->set('key1',12);$redis->incr('key1',2);$val=$redis->get('key1');//'14'操作List$redis=new\Redis();$redis->connect('127.0.0.1',6379);$redis->delete('list1');$redis->lPush('list1','a');$redis->lPush('list1','b');$redis->lPush('list1','c');$val=$redis->rPop('list1');操作Set$redis=new\Redis();$redis->connect('127.0.0.1',6379);$redis->delete('set1');$redis->sAdd('set1','a');$redis->sAdd('set1','b');$redis->sAdd('set1','c');$redis->sAdd('set1','c');$len=$redis->sCard('set1');var_dump($len);//int(3)$arr=$redis->sMembers('set1');var_dump($arr);//无序的搜索数组操作Hash$redis=new\Redis();$redis->connect('127.0.0.1',6379);$redis->delete('person1');$redis->hSet('person1','name','mingming');$redis->hSet('person1','age',42);$redis->hSet('person1','gender',1);$name=$redis->hGet('person1','name');var_dump($name);//string(8)'明明'$arr=$redis->hMGet('person1',array('name','age'));var_dump($arr);//关联数据组操作sortset$redis=new\Redis();$redis->connect('127.0.0.1',6379);$redis->delete('zset1');$redis->zAdd('zset1',100,'mingming');$redis->zAdd('zset1',90,'小红');$redis->zAdd('zset1',98,'xiaoming');$val=$redis->zRange('zset1',0,-1);//从低到高$val=$redis->zRevRange('zset1',0,-1);//从高到低##输出$val为索引数组redis数据持久化由于redis是基于内存存储数据的,一旦redis重启或者系统崩溃,内存中的数据就会丢失。为了保证数据安全,需要将数据持久化到硬盘上。如果只是作为缓存使用,可以禁用redis的持久化功能。Redis提供了两种持久化方式1、Snapshot持久化(默认开启,无需配置):数据安全性低,性能好2、AOF持久化(需要配置):数据安全性高,性能差ifapartofdatalost应用AOF持久化应用场景出现问题数据安全要求高的应用AOF持久化三种同步策略appendfsyncalways每次写操作同步(最高安全)appendfsynceverysec每秒同步一次(推荐)appendfsyncno操作系统决定何时同步