博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis Q&A
阅读量:6257 次
发布时间:2019-06-22

本文共 3510 字,大约阅读时间需要 11 分钟。

redis 是什么?

  • 基于内存
  • 有客户端和服务器端
  • NoSQL非关系型数据库

redis 应用场景是什么?

  • 缓存
  • 队列
  • 数据持久存储

redis 如何安装?如何启动?如何关闭?客户端如何启动?

  • 下载、解压、编译、安装

wget http://download.redis.io/releases/redis-4.0.1.tar.gz

tar -xzvf redis-4.0.1.tar.gz
cd redis-4.0.1
make
cd src
make install PREFIX=/usr/local/redis

  • redis 服务启动

cd /usr/local/redis/bin

./redis-server
注意这种方式启动redis 使用的是默认配置

通过启动参数告诉redis使用指定配置文件使用下面命令启动

./redis-server redis.conf

  • redis 服务关闭

cd /usr/local/redis/bin

./redis-cli shutdown
./redis-cli -h 127.0.0.1 -p 6379 shutdown #指定端口和主机

  • redis 客户端启动

cd /usr/local/redis/bin

./redis-cli
退出客户端 : 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_CLIENT shutdown}restart(){  stop  start}case "$1" in  'start')     start;;  'stop')     stop;;  'restart')     restart;;  *)     echo 'nothing to do';;esac
  • 添加服务作为自启动

如何调整 redis.conf 配置?

  • 设置为后台启动: daemonize yes

五种常用数据结构

  • String

key-value结构,key是字符串,value可存储 字符串整数浮点数

  • List

key-value结构,但是value是个数组,里面存储的值可以重复,但有序

  • Hash

key-value结构,但是value是个数组,里面存储的值也是key-value结构,key是唯一的

图片描述

  • Set

key-value结构,与List很相似,value也是个数组,里面存储的值不能重复,但无序

  • Sorted set

key-value结构,但是value是个数组,里面存储的值是score-value-rank结构,rank是隐藏值(由redis自动维护),value是唯一的,只可以修改score

图片描述

PHP如何安装redis扩展?

  • 下载 phpredis 插件

wget https://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 && make install

  • php.ini中加载redis.so文件

extension = redis.so

使用 phpredis 扩展如何操作 redis ?

注意phpredis的类都是在根命名空间下,所以使用phpredis类时,尽量在开头加/

  • 连接
$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) 'mingming'$arr = $redis -> hMGet('person1', array('name','age'));var_dump($arr);  //关联数组
  • 操作sort set
$redis = new \Redis();$redis -> connect('127.0.0.1', 6379);$redis -> delete('zset1');$redis -> zAdd('zset1', 100, 'mingming');$redis -> zAdd('zset1', 90, 'xiaohong');$redis -> zAdd('zset1', 98, 'xiaoming');$val = $redis -> zRange('zset1', 0, -1);  //低到高$val = $redis -> zRevRange('zset1', 0, -1);  //高到低##输出的$val是索引数组

redis 数据持久化

由于redis是基于内存来存储数据的,所以redis一旦重启或者系统崩溃,内存中的数据就会丢失,为了保证数据安全,所以需要把数据持久化存储到硬盘

如果仅仅当做缓存来使用,可以禁用redis持久化功能

  • redis提供两种持久化方法
1、快照持久化(默认开启,无需配置):数据安全性低,性能好2、AOF持久化(需要配置):数据安全性高,性能差
  • 快照持久化适用场景

只使用于那些即使丢失一部分数据也不会造成问题的应用程序

  • AOF持久化适用场景

用于对数据安全性要求高的应用程序

  • AOF持久化三种同步策略
appendfsync always 每次写操作就进行同步(安全性最高)appendfsync everysec 每秒执行一次同步(推荐)appendfsync no 操作系统决定何时同步

转载地址:http://flxsa.baihongyu.com/

你可能感兴趣的文章
【BZOJ3534】【Luogu P3317】 [SDOI2014]重建 变元矩阵树,高斯消元
查看>>
Ubuntu常用命令大全
查看>>
ScheduledExecutorService 定时任务,线程
查看>>
《C++ Primer Plus》读书笔记之三—循环与关系表达式
查看>>
vueJs2.0学习笔记(三)
查看>>
run in thread
查看>>
[HNOI2019]校园旅行
查看>>
vue实现菜单切换
查看>>
Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
查看>>
Maven学习总结(30)——Maven项目通用三级版本号说明
查看>>
如何提高iOS开发技能
查看>>
cocos2d-x HelloWorld 代码一撇
查看>>
2015.4.17专线割接
查看>>
map持久化类 Properties;对象序列化 ObjectOutputStream
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
ubuntu RPLIDAR A2的使用
查看>>
不用加减乘除实现加法运算
查看>>
一些有趣的javascript小测试
查看>>
数据库 innodb&MyISAM 简单区别
查看>>
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
查看>>