赞
踩
下载最新稳定版
cd /usr/local/src/
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf redis-4.0.1.tar.gz
cd redis-4.0.1
make && makeinstall
编译和安装which redis-cli
cp redis.conf /etc/redis.conf
拷贝配置文件vim /etc/redis.conf
//修改如下配置
# 在后台启动redis
daemonize yes
# 日志文件的位置
logfile "/var/log/redis.log"
# rdb的文件存在哪里
dir /data/redis_data/
# 开启aof日志
appendonly yes
mkdir /data/redis_data
创建redis保存的文件的位置
有两个关于内核参数的命令
建议添加在配置文件中,机器启动的之后就去执行vim /etc/rc.local
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl vm.overcommit_memory=1
内核参数
echo never > /sys/kernel/mm/transparent_hugepage/enabled
内核参数
redis-server /etc/redis.conf
启动redis
查看日志less /var/log/redis.log
cat /etc/redis.conf
save 900 1
#表示每15分钟且至少有1个key改变,就触发一次持久化save 300 10
#表示每5分钟且至少有10个key改变,就触发一次持久化save 60 10000
#表示每60秒至少有10000个key改变,就触发一次持久save “”
#注释掉别的,如上边这些配置,这样可以禁用rdb持久化appendonly yes
#如果是yes,则开启aof持久化appendfilename “appendonly.aof”
# 指定aof文件名字appendfsync everysec
#指定fsync()调用模式,aof三种写进去的形式,从内存刷新到硬盘磁盘上去string为最简单的类型,与Memcached一样的类型,一个key对应一个value,其支持的操作与Memcached的操作类似,它的功能更丰富。设置可以存二进制的对象。
示例:redis-cli
# redis-cli
127.0.0.1:6379> set mykey "aminglinux.com"
OK
127.0.0.1:6379> get mykey
"aminglinux.com"
127.0.0.1:6379> mset key1 1 key2 a key3 c
127.0.0.1:6379> mget key1 key2 key3
1) "1"
2) "a"
3) "c"
redis-cli
# redis-cli
127.0.0.1:6379>LPUSH list1 "aminglinux"
127.0.0.1:6379> LPUSH list1 "1 2 3"
127.0.0.1:6379> LPUSH list1 "aaa bbb“
127.0.0.1:6379>LRANGE list1 0 -1
1) "aaa bbb"
2) "1 2 3"
3) "aminglinux“
127.0.0.1:6379 > LPOP list1
redis-cli
127.0.0.1:6379> SADD set1 a
127.0.0.1:6379> SADD set1 b
127.0.0.1:6379>SADD set1 c
127.0.0.1:6379>SADD set1 d
127.0.0.1:6379> SMEMBERS set1
1) "d"
2) "b"
3) "a"
4) "c"
127.0.0.1:6379>SREM set1 c//删除元素
127.0.0.1:6379>SADD set2 a 2 b
127.0.0.1:6379>SINTER set1 set2//交集
127.0.0.1:6379>SUNION set1 set2//并集
127.0.0.1:6379>SDIFF set1 set2 //差集
sorted set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。
示例redis-cli
127.0.0.1:6379>ZADD set3 12 abc 127.0.0.1:6379>ZADD set3 2 "cde 123" 127.0.0.1:6379>ZADD set3 24 "123-aaa" 127.0.0.1:6379> ZADD set3 4 "a123a" 127.0.0.1:6379> ZRANGE set3 0 -1 1) "cde 123" 2) "a123a" 3) "abc" 4)"123-aaa" 127.0.0.1:6379> ZREVRANGE set3 0 -1 // 倒序显示数据 1)"123-aaa" 2) "abc" 3) "a123a" 4) "cde 123"
在Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(一般是JSON 格式),比如用户的昵称、年龄、性别、积分等。
示例redis-cli
127.0.0.1:6379> hset hash1 name aming
127.0.0.1:6379> hget hash1 name
"aming"
127.0.0.1:6379> hset hash1 age 30
127.0.0.1:6379> hget hash1 age
"30"
127.0.0.1:6379> hgetall hash1
1) "name"
2) "aming"
3) "age"
4) "30"
set key1 aminglinux
创建string类型的keyget key1
set key1 aming
//第二次赋值会覆盖setnx key2 aaa
//返回1 如果key2不存在直接创建keysetnx key2 bbb
//返回0,如果key2存在,返回0,不能覆盖set key3 aaa ex 10
创建的时候设定aaa的过期时间为10ssetex key3 10 1111
//给key3设置过期时间为10s,值为1111,若key已经存在,会覆盖新的值mset k1 1 k2 a k3 c
一次性设定多个值mget k1 k3 k2
一次性取得多个值lpush lista a
//从左侧加入一个元素lpush lista b
先加进去的排在后边lrange lista 0 -1
lpop lista
//从左侧取出第一个元素,也就是先进后出rpush lista 1
//从右侧加入一个元素rpop lista
//从右侧取出第一个元素,也就是先进先出linsert lista before 2 3
//在2的前面插入一个元素为3,如果是在2的后边插入就使用linsert lista after 2 3
lset lista 4 bbb
//把第5个元素修改为bbblindex lista 0
//查看第1个元素lindex lista 3
//查看第4个元素llen lista
//查看链表中有几个元素sadd seta aaa
//向集合seta中放入元素smembers seta
//查看集合中的所有元素srem seta aaa
//删除元素spop seta
//随机取出一个元素,删除sdiff seta setb
//求差集,以seta为标准sdiffstore setc seta setb
//求差集并且存储,存储到了setc里sinter seta setb
//求交集sinterstore setd seta setb
//将交集存储setdsunion seta setb
//求并集sunionstore sete seta setb
//求并集并存储到setesismember seta aaa
//判断一个元素是否属于一个集合srandmember seta
//随机取出一个元素,但不删除zadd zseta 11 123
//创建有序集合zrange zseta 0 -1
//显示所有元素,按顺序显示zrange zseta 0 -1 withscores
//可以带上分值zrem zseta 222
//删除指定元素zrank zseta 222
//返回元素的索引值,索引值从0开始,按score正向排序zrevrank zseta 222
//同上,不同的是,按score反序排序zrevrange zseta 0 -1
反序显示所有元素,并带分值zcard zseta
//返回集合中所有元素的个数zcount zseta 1 10
// 返回分值范围1-10的元素个数zrangebyscore zseta1 10
// 返回分值范围1-10的元素zremrangebyrank zseta 0 2
//删除索引范围0-2的元素,按score正向排序zremrangebyscore zseta 1 10
//删除分值范围1-10的元素hset user1 name aming
//建立hashhset user1 age 30
hset user1 job it
hgetall user1
hmset user2 name aming age 30 job it
//批量建立键值对hmget user2
hmget user2 name age job
hdel user2 job
//删除指定filedhkeys user2
//打印所有的keyhvals user2
//打印所有的valueshlen user2
//查看hash有几个filedkeys *
//取出所有keykeys my*
//模糊匹配exists name
//有name键 返回1 ,否则返回0;del key1
// 删除一个key //成功返回1 ,否则返回0;EXPIRE key1 100
//设置key1 100s后过期ttl key
// 查看键 还有多长时间过期,单位是s,当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,返回 key 的剩余生存时间。select 0
//代表选择当前数据库,默认进入0 数据库move age 1
// 把age 移动到1 数据库persist key1
//取消key1的过期时间randomkey
//随机返回一个keyrename oldname newname
//重命名keytype key1
//返回键的类型dbsize
//返回当前数据库中key的数目info
//返回redis数据库状态信息flushdb
//清空当前数据库中所有的键flushall
//清空所有数据库中的所有的keybgsave
//保存数据到 rdb文件中,在后台运行save
//作用同上,但是在前台运行config get *
//获取所有配置参数config get dir
//获取配置参数config set dir
//更改配置参数vim /etc/redis.conf
bind 127.0.0.1 2.2.2.2
//可以是多个ip,用空格分隔port 16000
requirepass aming>com
,其中aming>com就是密码,之后重启redis
killall redis-server
redis-server /etc/redis.conf
redis-cli -a 'aming>com'
用密码进行登陆keys *
登陆成功之后测试rename-command CONFIG aming
rename-command CONFIG “”
vim /etc/redis.conf
slowlog-log-slower-than 1000
//单位ms,表示慢于1000ms则记录日志slowlog-max-len 128
//定义日志长度,表示最多存128条redis-cli -a 'aming>com'
slowlog get
//列出所有的慢查询日志slowlog get 2
//只列出2条slowlog len
//查看慢查询日志条数cd /usr/local/src
wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip
unzip phpredis.zip
cd phpredis-develop
/usr/local/php-fpm/bin/phpize
生成config文件./configure --with-php-config=/usr/local/php-fpm/bin/php-config
编译选项和参数make
make install
vim /usr/local/php-fpm/etc/php.ini
//增加extension=redis.so
/usr/local/php-fpm/bin/php -m|grep redis
//看是否有redis模块/etc/init.d/php-fpm restart
vim /usr/local/php-fpm/etc/php.ini
//更改或增加
session.save_handler= "redis"
session.save_path= "tcp://127.0.0.1:6379"
或者apache虚拟主机配置文件中也可以这样配置:
php_value session.save_handler " redis"
php_value session.save_path " tcp://127.0.0.1:6379"
或者php-fpm配置文件对应的pool中增加:
php_value[session.save_handler]= redis
php_value[session.save_path]= " tcp://127.0.0.1:6379 "
wget http://study.lishiming.net/.mem_se.txt
mv .mem_se.txt /usr/local/apache2/htdocs/session.php
其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php
curl localhost/session.php
//结果类似于1443702394<br><br>1443702394<br><br>i44nunao0g3o7vf2su0hnc5440
命令行连接redis,也可以查看到该key以及对应的值
如果想用php连接redis cluster,需要使用predis扩展
安装方法类似phpredis,predis扩展地址https://github.com/nrk/predis
cp /etc/redis.conf /etc/redis2.conf
vim /etc/redis2.conf
//需要修改
slaveof 127.0.0.1 6379
,需要在从上指定主是谁masterauth aminglinux>com
//设置主的密码mkdir /data/redis2_data
redis-server /etc/redis2.conf
redis-cli -h 127.0.0.1 -p 6380
进入从的reidskeys *
config get slaveof
查看从的ip和端口信息场景设置:
scp -r redis-4.0.1 ip:/usr/local/src/
make install
netstat -lntp
getenforce
setenforce 0
setenforce 1
vim /etc/selinux/config
,设置selinux为disabled就行了,下次开机就不会启动了两台机器上都要编译安装redis,然后编辑并复制3个不同的redis.conf,分别设置不同的端口号、dir等参数,还需要增加cluster相关参数,然后分别启动6个redis服务
# A机器7000端口 port 7000 bind 192.168.132.128 daemonize yes pidfile /var/run/redis_7000.pid dir /data/redis_data/7000 cluster-enabled yes cluster-config-file nodes_7000.conf cluster-node-timeout 10100 appendonly yes # B机器7001端口从 port 7001 bind 192.168.132.130 daemonize yes pidfile /var/run/redis_7001.pid dir /data/redis_data/7001 cluster-enabled yes cluster-config-file nodes_7001.conf cluster-node-timeout 10100 appendonly yes # A机器7002端口 port 7002 bind 192.168.132.128 daemonize yes pidfile /var/run/redis_7002.pid dir /data/redis_data/7002 cluster-enabled yes cluster-config-file nodes_7002.conf cluster-node-timeout 10100 appendonly yes # B机器7003端口从 port 7003 bind 192.168.132.130 daemonize yes pidfile /var/run/redis_7003.pid dir /data/redis_data/7003 cluster-enabled yes cluster-config-file nodes_7003.conf cluster-node-timeout 10100 appendonly yes # A机器7004端口 port 7004 bind 192.168.132.128 daemonize yes pidfile /var/run/redis_7004.pid dir /data/redis_data/7004 cluster-enabled yes cluster-config-file nodes_7004.conf cluster-node-timeout 10100 appendonly yes # B机器7005端口从 port 7005 bind 192.168.132.130 daemonize yes pidfile /var/run/redis_7005.pid dir /data/redis_data/7005 cluster-enabled yes cluster-config-file nodes_7005.conf cluster-node-timeout 10100 appendonly yes
mkdir /data/redis_data/{7001,7003,7005}
安装ruby2.2 (只需要一台机器上运行),以下的操作为了安装更高版本的ruby,更高版本的ruby包yum没有,所以需要自己本地做一个rpm包
yum -y groupinstall "Development Tools"
yum -y install gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-deve
cd /root/
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
创建把源码包搞成rpm的目录wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES
源码包wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS
下载一个SPECS的文件,这个文件很关键rpmbuild -bb rpmbuild/SPECS/ruby22x.spec
编译yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm
安装生成的rpm包ruby -v
查看安装的ruby的版本信息gem install redis
安装的是redis中和ruby相关的东西,需要用到去配置集群
cp /usr/local/src/redis-4.0.1/src/redis-trib.rb /usr/bin/
拷贝之后就可以直接运行这个命令了,运行这个命令必须要有ruby的支持redis-trib.rb create --replicas 1 192.168.132.128:7000 192.168.132.128:7002 192.168.132.128:7004 192.168.132.130:7001 192.168.132.130:7003 192.168.132.130:7005
这样就可以实现集群了,使用这个命令之后选择主从,前三个是主,后边三个是从echo $?
查看成功了没有redis-cli -c -h 192.168.133.130 -p 7000
//-c说明以集群的方式登录,如果不加-c就表示的是仅仅是7000这个端口,没有操作集群set key1 123
看提示,没有提示就表示创建的本地上get key1
redis-trib.rb check 192.168.133.130:7000
//在linux命令行下检测集群状态cluster nodes
//列出节点cluster info
//查看集群信息cluster meet ip port
//添加节点
cluster forget node_id
//移除某个节点,只能把从节点给放掉cluster replicate node_id
//将当前节点设置为指定节点的从
cluster saveconfig
//把当前的这些cluster的操作保存到节点配置文件
cat /data/redis_data/7001/nodes_7001.conf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。