Redis安装配置
下载地址http://redis.io/download 安装步骤:
1 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到linux /usr/local文件夹下
2 进行解压 tar -zxvf redis-3.0.0-rc2.tar.gz
3 进入到redis-3.0.0目录下,进行编译 make
4 进入到src下进行安装 make install 验证(ll查看src下的目录,有redis-server 、redis-cil即可)
5 建立俩个文件夹存放redis命令和配置文件
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/bin
6 把redis-3.0.0下的redis.conf 移动到/usr/local/redis/etc下,
cp redis.conf /usr/local/redis/etc/
7 把redis-3.0.0/src里的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server
文件移动到bin下,命令:
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
8 启动时并指定配置文件:./redis-server /usr/local/redis/etc/redis.conf(注意要使用后台启动,所以修改redis.conf里的 daemonize 改为yes)
9 验证启动是否成功: ps -ef | grep redis 查看是否有redis服务 或者 查看端口:netstat -tunpl | grep 6379
进入redis客户端 ./redis-cli 退出客户端quit 退出redis服务:
(1)pkill redis-server 、
(2)kill 进程号、
(3)/usr/local/redis/bin/redis-cli shutdown
一、String
1、查看Redis中的数据
key *
2、添加数据
set key value
(1) 当Redis里面没有对应的key就创建
setnx key value
(2) 设置过期时间,单位秒
setex key time value
(3) //批量设置值
mset key1 value1 key2 value2 key3 vlaue3
3、setrange 替换字符串
setrange key index value //从索引index处替换值为value
3、取数据
(1) get key
(2)
mget key1 key2 key3 //批量获取值
4、 //对一个值进行自增自减的操作
incr 和 desr
(1) //对一个key的值自增1
incr key
(2) 对一个key指定长度的自增/自减
incrby key value
5、追加字符串,在key的值后面追加了value值
append key value
6、查看字符串key的长度
strlen key
二、Hash(hash集合)
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。
1、 //创建一个myhash的hash集合名字是field1 值为hell
hset myhash field1 hell
2、//获取myhash中的值
hget myhash field1
3、批量设置多个值
hmset
4、 //是否存在,不存在则返回0
hexists
5、//返回hash集合里的所有键数值
hlen
6、//删除指定hash的field
hdel
7、//返回hash里所有字段
hkeys
8、//返回hash的所有value
hvals
9、//返回hash里所有的key和value
hgettall
三、list(类似于Java里的queue)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
1、//从头部加入元素(栈)先进后出
lpush
例如:
lpush list1 "hello" lpush list1 "world"
lrange list1 0-1 //表示从头去到末尾
2、//从尾部加入元素(队列)先进后出
rpush
例如:
rpush list2 "beijing" rpush list2 "hyn"
lrange list2 0-1
3、linsert //插入元素
例如:
linsert list3 before [几何的元素] [插入的元素]
4、//将指定下标的元素替换掉
lset
5、//删除元素,返回删除个数
lrem
6、//保留指定key 的值范围内的数据
ltrim
7、//从list的头部删除元素,并返回删除元素
lpop
8、//从list尾部删除元素,并返回删除元素
rpop
9、//第一步从尾部删除元素,然后第二步从头部加入元素
rpoprpush
10、//返回名称为key 的list的list中index位置的元素
lindex
11、//返回元素的个数
llen
四、set和zset
set集合是一个string类型(无序集合),不能有重复
1、//向名称为key的set中添加元素
sadd
例如:
sadd set1 aaa
2、//查看set中的元素
smembers
3、//返回set中的交集
sinter
4、//返回set中的交集,并存入另一个set中
sinterstroe
例如:
//返回set1 和set2 的交集,并存入set3中
sinterstroe set3 set1 set2
5、//取并集,存入set3中(用法同上)
sunion
6、//从一个set集合移动到另一个set集合中
smove
例如:
smove set1 set2 a
7、//查看集合里元素个数
scard
8、//判断某元素是否为集合中的元素
sismember
9、//随机返回一个元素
srandmember
zset集合(有顺序)
1、//想有序集合中添加一个元素,改元素如果存在,则跟新顺序
zadd
例如:
zadd zset1 5 five //将five添加进去,排在第5个位置
2、//查看zset中的全部元素,并显示位置标号
zrange zset1 0 -1 withscores
3、//删除名称为key 的zset中的元素member
zrem
4、//以指定值去自动递增或者减少,用法和之前incrby类似
zincrby
5、//找到指定区间范围的数据进行返回
zrangebyscore
6、//删除1到到1(只删除索引1)
zremrangebyrank
7、//删除指定序号
zremrangebyscore
五、Redis中的一些高级命令
1、//可以模糊匹配
keys *
例如:
keys *4 //匹配以4结尾的内容
2、//设置某个key 的活期时间,使用ttl查看剩余时间
expire
例如:
expire name 5 //设置name的变量过期时间5秒
3、//查看过期剩余的时间
ttl
4、//取消过期时间的设置
persist
5、//选择数据库 数据库为0~15(一共16个数据库) 默认进入的是0数据库
select 2 //选择下标为2的数据库
6、 //将当前的数据库key转移到其他数据库中
move [key] [数据库下标]
7、//随机返回数据库的一个key
randomkey
8、//重命名key
rename
9、//打印命令
echo
10、//查看数据库的key数量
dbsize
11、 //获取数据库信息
info
12、 //实时传存收到的请求(返回相关的配置信息)
config get
13、//返回所有的配置
config get *
14、清空当前数据库,
flushdb
//清空全部数据库
flushall
六、Redis中的安全设置
1、vi命令编辑redis.conf文件,修改下面配置
#requirespass foobared
requirepass [你的密码]
2、重启服务器
pkill redis-server
3、
auth [你的密码] //查看redis的数据
七、Redis的主从复制
1、master可以拥有多个slave
2、多个slave可以连接同一个master外,还可以连接其他的slave
3、主从复制不会阻塞master在同步数据时 master可以继续处理client请求
4、提供系统的伸缩性
主从复制的过程:
1、slave 与master建立连接,发送sync同步命令
2、master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
3、后台完成保存后,就将文件发送给slave
4、slave将此文件保存到硬盘上
主从复制的配置:
clone 服务器之后修改slave的IP的地址
修改配置文件: /usr/local/redis/etc/redis.conf
第一步:slaveof <masterip> <masterport>
第二步:masterauth <master-password>
使用info查看role 角色即可知道是主服务或从服务
八、Redis持久化
在工作中用到是第一种方案的appendfsync always,确保数据的不丢失。
九、Redis中的发布订阅模式
1、使用sbuscribe [频道] 进行订阅监听
sbuscribe cctv
2、使用publish [频道] [发布内容] 进行发布消息广播
publish cctv 'hello'
十、Redis的集群和搭建
Redis的集群搭建至少需要3个master(6个节点:3个master和3个slave)
1、:创建一个文件夹redis-cluster,然后在其下面创建6个文件夹
(1)
mkdir -p /usr/local/redis-cluster
(2)mkdir 7001 、mkdir 7002、mkdir 7003、mkdir 7003、mkdir 7004、mkdir 7005、mkdir 7006、
2、把之前的redis.conf配置文件分别cope到700*目录下,进行修改各个文件内容,也就是对700*下的每个cope的redis.conf文件进行修改!如下:
(1)
daemonize yes
(2)分别对每个机器的端口号进行设置
port 700*
(3)(必须要绑定当前机器IP,不然会无限悲剧下去哇..深坑勿入!!!)
bind 192.168.1.171
(4)(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,深坑勿入!!!)
dir /usr/local/redis-cluster/700*/
(5)(启动集群模式,开始^_^)
cluster-enable yes
(6)(这里700x最好和port对应上)
cluster-config-file nodes700*.conf
(7)
cluster-node-timeout 5000
(8)
appendonly yes
3、