linux安装redis及phpredis环境配置(超详细)

下载安装包

  cd /home/redis/tar

   wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz

   tar zxvf redis-2.4.17.tar.gz

   cd redis-2.4.17

   make 

   cd src 

   make install

   在该目录会看到以下文件

    

redis-benchmark      压力测试

redis-check-aof       检查redis持久化命令文件的完整性

redis-check-dump   检查redis持久化数据文件的完整性

redis-cli                  redis在linux上的客户端

redis-sentinel          做集群用的

redis-server            linux上的服务端

将redis源码目录下的  src目录里的 redis-cli和 redis-server 拷贝到工作目录里.同时将源码根目录下的redis.conf 也拷贝到工作目录里

mkdir -p /usr/local/redis

mkdir -p /usr/local/redis

cp /home/redis/tar/redis-2.4.17/redis.conf /usr/local/redis

cd /home/redis/tar/redis-2.4.17/src

cp mkreleasehdr.sh redis-benchmak redis-check-aof redis-check-dump redis-cli redis-server   /usr/local/redis

启动redis服务器:

 cd /usr/local/redis

 vi ./redis.conf

把参数daemonize no 改为 daemonize yes

 ./redis-server redis.conf

查看redis 是否启动成功

ps -ef | grep redis

netstat -tunpl |grep 6379

关闭redis

pkill redis-server

二. redis配置文件说明

/usr/local/redis/redis.conf

1 daemonize  no

默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为yes

2 pidfile  /var/run/redis.pid

当Redis 在后台运行的时候,Redis 默认会把pid 文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis 服务时,需要指定不同的pid 文件和端口

3 port

监听端口,默认为6379

4 #bind 127.0.0.1

指定Redis 只接收来自于该IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中为了安全最好设置该项。默认注释掉,不开启

5 timeout 0

设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接

6 tcp-keepalive 0

指定TCP连接是否为长连接,"侦探"信号有server端维护。默认为0.表示禁用

7 loglevel notice

log 等级分为4 级,debug,verbose, notice, 和warning。生产环境下一般开启notice

8 logfile stdout

配置log 文件地址,默认使用标准输出,即打印在命令行终端的窗口上,也可以修改为日志文件对应的目录地址

9 databases 16

设置数据库的个数,可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库。默认16个库

10

save 900 1

save 300 10

save 60 10000

保存数据快照的频率,即将数据持久化到dump.rdb文件中的频度。用来描述"在多少秒期间至少多少个变更操作"触发snapshot数据保存动作

默认设置,意思是:

if(在60 秒之内有10000 个keys 发生变化时){

进行镜像备份

}else if(在300 秒之内有10 个keys 发生了变化){

进行镜像备份

}else if(在900 秒之内有1 个keys 发生了变化){

进行镜像备份

}

11 stop-writes-on-bgsave-error yes

当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求。默认设置"yes"表示终止,一旦snapshot数据保存故障,那么此server为只读服务。如果为"no",那么此次snapshot将失败,但下一次snapshot不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点"

12 rdbcompression yes

在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复

13 rdbchecksum yes

读取和写入时候,会损失10%性能

14 rdbchecksum yes

是否进行校验和,是否对rdb文件使用CRC64校验和,默认为"yes",那么每个rdb文件内容的末尾都会追加CRC校验和,利于第三方校验工具检测文件完整性

14 dbfilename dump.rdb

镜像备份文件的文件名,默认为 dump.rdb

15 dir ./

数据库镜像备份的文件rdb/AOF文件放置的路径。这里的路径跟文件名要分开配置是因为Redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中

16 # slaveof <masterip> <masterport>

设置该数据库为其他数据库的从数据库,并为其指定master信息。

17 masterauth

当主数据库连接需要密码验证时,在这里指定

18 slave-serve-stale-data yes

当主master服务器挂机或主从复制在进行时,是否依然可以允许客户访问可能过期的数据。在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期;在"no"情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error"

19 slave-read-only yes

slave是否为"只读",强烈建议为"yes"

20 # repl-ping-slave-period 10

slave向指定的master发送ping消息的时间间隔(秒),默认为10

21 # repl-timeout 60

slave与master通讯中,最大空闲时间,默认60秒.超时将导致连接关闭

22 repl-disable-tcp-nodelay no

slave与master的连接,是否禁用TCP nodelay选项。"yes"表示禁用,那么socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制)。

可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为no

23 slave-priority 100

适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master。如果权重值为0,表示此slave为"观察者",不参与master选举

24 # requirepass foobared

设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

25 # rename-command CONFIG 3ed984507a5dcd722aeade310065ce5d    (方式:MD5('CONFIG^!'))

重命名指令,对于一些与"server"控制有关的指令,可能不希望远程客户端(非管理员用户)链接随意使用,那么就可以把这些指令重命名为"难以阅读"的其他字符串

26 # maxclients 10000

 

限制同时连接的客户数量。当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到error 信息。默认为10000,要考虑系统文件描述符限制,不宜过大,浪费文件描述符,具体多少根据具体情况而定

27 # maxmemory <bytes>

redis-cache所能使用的最大内存(bytes),默认为0,表示"无限制",最终由OS物理内存大小决定(如果物理内存不足,有可能会使用swap)。此值尽量不要超过机器的物理内存尺寸,从性能和实施的角度考虑,可以为物理内存3/4。此配置需要和"maxmemory-policy"配合使用,当redis中内存数据达到maxmemory时,触发"清除策略"。在"内存不足"时,任何write操作(比如set,lpush等)都会触发"清除策略"的执行。在实际环境中,建议redis的所有物理机器的硬件配置保持一致(内存一致),同时确保master/slave中"maxmemory""policy"配置一致。

当内存满了的时候,如果还接收到set 命令,redis 将先尝试剔除设置过expire 信息的key,而不管该key 的过期时间还没有到达。在删除时,

将按照过期时间进行删除,最早将要被过期的key 将最先被删除。如果带有expire 信息的key 都删光了,内存还不够用,那么将返回错误。这样,redis 将不再接收写请求,只接收get 请求。maxmemory 的设置比较适合于把redis 当作于类似memcached的缓存来使用。

28 # maxmemory-policy volatile-lru

内存不足"时,数据清除策略,默认为"volatile-lru"。

volatile-lru  ->对"过期集合"中的数据采取LRU(近期最少使用)算法.如果对key使用"expire"指令指定了过期时间,那么此key将会被添加到"过期集合"中。将已经过期/LRU的数据优先移除.如果"过期集合"中全部移除仍不能满足内存需求,将OOM.
allkeys-lru ->对所有的数据,采用LRU算法
volatile-random ->对"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止. 如果如果"过期集合"中全部移除全部移除仍不能满足,将OOM
allkeys-random ->对所有的数据,采取"随机选取"算法,并移除选中的K-V,直到"内存足够"为止
volatile-ttl ->对"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据.
noeviction ->不做任何干扰操作,直接返回OOM异常
另外,如果数据的过期不会对"应用系统"带来异常,且系统中write操作比较密集,建议采取"allkeys-lru"

29 # maxmemory-samples 3

默认值3,上面LRU和最小TTL策略并非严谨的策略,而是大约估算的方式,因此可以选择取样值以便检查

29 appendonly no

默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。所以redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。如果不经常进行数据迁移操作,推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof 进行重写一次。

另外,对master机器,主要负责写,建议使用AOF,对于slave,主要负责读,挑选出1-2台开启AOF,其余的建议关闭

30 # appendfilename appendonly.aof

aof文件名字,默认为appendonly.aof

31 

# appendfsync always
appendfsync everysec
# appendfsync no

设置对appendonly.aof 文件进行同步的频率。always 表示每次有写操作都进行同步,everysec 表示对写操作进行累积,每秒同步一次。no不主动fsync,由OS自己来完成。这个需要根据实际业务场景进行配置

32 no-appendfsync-on-rewrite no

在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。默认为no,表示"不暂缓",新的aof记录仍然会被立即同步

33 auto-aof-rewrite-percentage 100

当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。

34 auto-aof-rewrite-min-size 64mb

触发aof rewrite的最小文件尺寸

35 lua-time-limit 5000

lua脚本运行的最大时间

36 slowlog-log-slower-than 10000

"慢操作日志"记录,单位:微秒(百万分之一秒,1000 * 1000),如果操作时间超过此值,将会把command信息"记录"起来.(内存,非文件)。其中"操作时间"不包括网络IO开支,只包括请求达到server后进行"内存实施"的时间."0"表示记录全部操作

37 slowlog-max-len 128

"慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除。可以通过"SLOWLOG <subcommand> args"查看慢记录的信息(SLOWLOG get 10,SLOWLOG reset)

38

 hash-max-ziplist-entries 512

hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。

这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128
hash-max-ziplist-value 64

ziplist中允许条目value值最大字节数,默认为64,建议为1024

39 

list-max-ziplist-entries 512
list-max-ziplist-value 64

对于list类型,将会采取ziplist,linkedlist两种编码类型。解释同上。

40 set-max-intset-entries 512

intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable

41 

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。

42 activerehashing yes

是否开启顶层数据结构的rehash功能,如果内存允许,请开启。rehash能够很大程度上提高K-V存取的效率

43 

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除。

buffer控制类型包括:normal -> 普通连接;slave ->与slave之间的连接;pubsub ->pub/sub类型连接,此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.
指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;
soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后,buffer数据小于了soft,连接将会被保留.
其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.

44 hz 10

Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。

45 

# include /path/to/local.conf
# include /path/to/other.conf

额外载入配置文件。

 phpredis扩展安装

   phpredis中文手册:

  http://www.cnblogs.com/ikodota/archive/2012/03/05/php_redis_cn.html

  下载phpredis

   https://github.com/owlient/phpredis

   cd /home/redis/tar

   tar phpredis.tar.gz

   cd phpredis.tar.gz

   /usr/local/php/bin/phpize    #此指令必须在phpredis解压包/home/redis/tar/phpredis 执行

安装autoconf-2.62.tar.gz

 cd /home/redis/tar

 tar zxvf autoconf-2.62.tar.gz

 cd autoconf-2.62

 ./configure && make && make install

  

  配置并编译安装phpredis

 ./configure --with-php-config=/usr/local/php/bin/php-config

  make && make install

  

 

复制代码
nginx 为php安装redis扩展
获取源码包
wget https://github.com/nicolasff/phpredis/archive/master.zip
或https://github.com/owlient/phpredis
unzip master.zip
cd phpredis-master/
/application/php/bin/phpize #如果是yum安装php-devel 那么直接使用phpize
./configure --with-php-config=/usr/local/php/bin/php-config #如果是yum安装的php 直接。、configure
make 
make install
修改/etc/php.ini
添加
extension_dir ="/usr/lib64/php/modules/"
extension=redis.so
重启php
/etc/init.d/php-fpm restart
复制代码

 

 

 

给php.ini设置redis扩展

   打开php.ini配置文件设置以下代码

   vi /usr/local/php/etc/php.ini

   

   重启apache

   /usr/local/http2/bin/apachectl restart

查看php是否有引入redis扩展

 

php使用redis示例代码

如果不清楚php-redis扩展内部到底有什么方法可以利用反射

String类型

set 设置key对应的值为string类型的value

get 获取key对应的string值,如果key不存在返回nil

setnx 设置key对应的值为string类型的value 如果key已经存在 返回0,nx是not exist的意思

setex设置key对应的值为string类型的value 并指定此键值对应的有效期

例如:我们添加一个color=red的键值对并指定有效期为10秒

setrange 设置指定key的value值的子字符串

mset 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置

 

msetnx 一次设置多个key的值,成功返回ok表示所有的值都被设置了,失败返回0表示没有任何值被设置(其中的key已存在),不会覆盖已存在的key

getset 设置key的值,并返回key的旧值

getrange获取key的value值的子字符串

mget 一次获取多个key的值,如果对应的key不存在则对应返回nil

 incr对key的值做加加操作,并返回新的值

incrby同incr类似,加指定的值,key不存在时候会设置key,并认为原来的value是0.

decr 对key的值做减减操作

decrby 同decr类似减指定的值

append 给指定key的字符串追加value,返回新字符串值的长度

strlen取指定key的value值的长度

hash类型

redis hash是一个string类型的field和value的映射表。它的添加 删除操作都是0(1) hash特别适合用于存储对象,相比较于将对象的每个字段存成string类型。将一个对象存储在hash类型中会占用更少的内存。并且可以更方便的存取整个对象。

 hset设置hash field为指定值,如果key不存在则先创建

hsetnx设置hash field为指定值,如果key不存在,则先创建。如果存在返回0.

hmset 同时设置hash的多个field的值,设置成功返回ok

hget 获取hash field的值

hmget 获取全部指定的hash field field1 的值

hincrby 指定的hash field 加上给定的值

hexists 测试指定的field是否存在 如果存在返回1 否则返回0

hlen 返回指定hash的field数量

hdel 删除指定hash的field

hkeys 返回hash的所有field

hvals 返回hash的所有value

hgetall获取某个hash中全部的field及value

list类型

list是一个链表结构主要功能是push  pop 获取一个范围的所有值等等。操作中key理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push pop操作从链表的头部或者尾部添加删除元素。这样list既可以作为栈,又可以作为队列。

lpush 在key对应list的头部添加字符串元素  先进后出原则

rpush 在key对应的list的尾部添加字符串元素   先进先出原则

linsert 在key对应list的特定位置前或后添加字符串

 

lset设置list中指定下标的元素值

lrem 从key对应的list中删除n个和value相同的元素(n<0从尾删除,n=0全部删除)

ltrim 保留指定key的值范围内的数据删除其他的值

ltrim list1 1 -1 从下标1开始保留全部的数据 1 2 从下标1开始保留两个数据

lpop从list的头部删除元素,并返回删除元素

rpop从list的尾部删除元素,并返回删除元素

rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部

lindex 返回名称为key的list中index位置的元素

llen 返回key对应list的长度

 set类型

set是集合,它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找的复杂度都是0(1).对集合我们可以取并集,交集,差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能

sadd 向名称为key的set中添加元素

srem 删除名称为key的set中的元素

spop随机返回并删除名称为key的set中一个元素

sdiff 返回所有给定key与第一个key的差集

sdiffstore返回所有给定key与第一个key的差集,并将结果存为另一个key

sinter 返回所有给定key的交集

sinterstore返回所有给定key的交集,并将结果存为另一个key

sunion 返回所有给定key的并集

sunionstore 返回所有给定key的并集并存储为myset7

smove 从第一个key对应的set中移除member并添加到第二个对应的set中

scard 返回名称为key的set的元素个数

sismember 测试member是否是名称为key的set元素

srandmember 随机返回名称为key的set的一个元素,但不删除元素

sorted set类型

sorted set是set的一个升级版本,它在set的基础上增加一个顺序属性,这个属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序,可以理解为有两列的mysql表,一列存value.一列存顺序,操作key理解为zset的名字。

zadd向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序。

zrang读取zset中的值。withscores 取顺序号

zrem删除名称为key的zset中的元素member

zincrby如果在名称为key的zset中已经存在元素member,则该元素的score增加increment否则向该集合中添加该元素,其score的值为increment

zrank 返回zset集合value的索引值

zrevrank返回名称为key的zset中member元素的排名(按score从大到小排序)即下标

zrevrange 返回名称为key的zset(按score从大到小顺序)中的index从start到end的所有元素

 

zrangebyscore 返回指定下标的值

 

zcount 返回集合中给定区间的数量

 

zcard 返回集合中元素的个数

zremrangebyrank 删除集合中排名在给定区间的元素(按索引)

zremrangebyscore 删除集合中score在给定区间的元素(按顺序号)

 redids中键值相关命令

keys 返回满足给定pattern的所有key  用表达式*,代表取出所有的key

exists 确认一个key是否存在 存在返回1 不存在返回0

del 删除一个key

expire 设置一个key的过期时间  ttl 查看key的剩余过期时间 为-1 表示已经过期

select 是选择数据库   select 0  数据库0-15

move 将当前数据库中的key转移到其他数据库中

persist 移除给定key的过期时间

randomkey 随机返回key空间的一个key

rename 重命名key

type 返回值的类型

服务器相关命令

ping 测试连接是否存活

quit或exit 退出连接

dbsize 返回当前数据库中key的数目

info 获取服务器的信息和统计

config get 实时存储收到的请求

config get dir 获取dir这个参数配置的值如果想获取全部参数数据的 配置值也很简单,只需要执行 config get *j

即可将全部值都显示出来

flushdb 删除当前选择数据库中的所有key

flushall 删除所有数据库中的所有key

 

redis高级使用特性

1.安全性

设置客户端连接后进行任何其他指定前需要输入密码。

  因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150k次的密码尝试。这意味着你需要指定非常非常强大的密码来防止暴力破解。

 vi  /usr/local/redis/redis.conf

  添加 requirepass = ceshi

 

  pkill redis-server

  重启redis

 /usr/local/redis/redis-server  /usr/local/redis/redis.conf

 /usr/local/redis/redis-cli -a ceshi

 auth mima 设置权限  就是登陆客户端的时候没有指定 -a

 

 

redis主从复制过程

 1.slave与master建立连接,发送sync同步命令

 2、master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。

 3、后台完成保存后,就将此文件发送给slave

 4、slave将此文件保存到硬盘上

配置主从服务器:

 配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

 slaveof 192.168.1.1 6379 #指定master的ip和端口

 masterauth ceshi #这是主机的密码

在redis_slave 服务器的/usr/local/redis/redis.conf

重启redis_slave服务的redis

redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行。而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时。这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。

discard 取消事务

当事务中任何一个出错 但redis的事务不会全部回滚

乐观锁复杂事务控制

redis 持久化机制

redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化

1.snapshotting(快照)也是默认方式

2.Append-onlyfile(缩写aof)的方式

配置文件中添加 relly-use-vm yes

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lightCMS是一个轻量级的CMS系统,也可以作为一个通用的后台管理框架使用。lightCMS集成了用户管理、权限管理、日志管理、菜单管理等后台管理框架的通用功能,同时也提供模型管理、分类管理等CMS系统中常用的功能。lightCMS的代码一键生成功能可以快速对特定模型生成增删改查代码,极大提高开发效率。 lightCMS基于Laravel 5.5开发,前端框架基于layui。 lightCMS功能介绍: 后台: 基于RBAC的权限管理 管理员、日志、菜单管理 分类管理 配置管理 模型、模型字段、模型内容管理(后台可自定义业务模型,方便垂直行业快速开发) 会员管理 评论管理 基于Tire算法的敏感词过滤系统 普通模型增删改查代码一键生成 前台: 用户注册登录(包括微信、QQ、微博三方登录) 模型内容详情页、列表页 评论相关 系统环境: linux/windows & nginx/apache/iis & mysql 5.5+ & php 7.2+ PHP >= 7.2.0 OpenSSL PHP Extension PDO PHP Extension Mbstring PHP Extension Tokenizer PHP Extension XML PHP Extension 注意事项: 如果缓存、队列、session用的是redis驱动,那还需要安装redisphp redis扩展。 如果PHP安装了opcache扩展,请启用opcache.save_comments和opcache.load_comments配置(默认是启用的),否则无法正常使用菜单自动获取功能。 安装前请确保系统已安装好composer。国内用户建议先设置composer镜像,避免安装过程缓慢。 后台访问地址:/admin/login 默认用户(此用户为级用户,不受权限管理限制):admin/admin

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值