Redis安装部署及常用命令操作
Redis介绍
Redis特点
1.速度快
Redis 所有的数据都存放在内存中
Redis 使用c语言实现
Redis 使用单线程架构
2.基于键值对的数据结构服务器
5种数据结构:字符串,哈希,列表,集合,有序集合
3.丰富的功能
提供了键过期功能,可以实现缓存
提供了发布订阅功能,可以实现消息系统
提供了pipeline功能,客户端可以将一批命令一次性传到 Redis,减少了网络开销
4.简单稳定
源码很少,3.0 版本以后 5 万行左右.
使用单线程模型法,是的Redis服务端处理模型变得简单.
不依赖操作系统的中的类库
5.客户端语言多
java,PHP,python,C,C++,Nodejs等
6.数据持久化
把所有的数据都存在内存中
RDB和AOF
7.主从复制高可用和分布式
哨兵 redis-sentinel
集群 redis-cluster
Redis应用场景
1.缓存-键过期时间
缓存session会话
缓存用户信息,找不到再去mysql查,查到然后回写到 redis
优惠卷过期时间
2.排行榜-列表&有序集合
热度排名排行榜
发布时间排行榜
3.计数器应用-天然支持计数器
帖子浏览数
视频播放次数
商品浏览数
4.社交网络-集合
踩/赞,粉丝,共同好友/喜好,推送,打标签
5.消息队列系统-发布订阅
配合elk实现日志收集
安装部署
1.目录规划
### redis 下载目录 /data/soft/ ### redis 安装目录 /opt/redis_cluster/redis_{PORT}/{conf,logs,pid} ### redis 数据目录 /data/redis_cluster/redis_{PORT}/redis_{PORT}.rdb ### redis 运维脚本 /root/scripts/redis_shell.sh
2.安装操作命令
mkdir -p /data/redis_cluster/redis_6379 mkdir -p /opt/redis_cluster/redis_6379/{conf,pid,logs} cd /data/soft/ wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar zxf redis-3.2.9.tar.gz -C /opt/redis_cluster/ ln -s /opt/redis_cluster/redis-3.2.9/ /opt/redis_cluster/redis cd /opt/redis_cluster/redis make && make install #添加环境变量 [root@db01 redis]# vim /etc/profile.d/redis.sh export PATH="/application/redis/src:$PATH"
3.配置文件
cd /opt/redis_cluster/redis_6379/conf/ cat redis_6379.conf #以守护进程模式启动 daemonize yes #绑定的主机地址 bind 10.0.0.51 #监听端口 port 6379 #pid 文件和 log 文件的保存地址 pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log #设置数据库的数量,默认数据库为 0 databases 16 #指定本地持久化文件的文件名,默认是 dump.rdb dbfilename redis_6379.rdb #本地数据库的目录 dir /data/redis_cluster/redis_6379
4.启动
redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
5.检查
ps -ef|grep redis netstat -lntup|grep 6379
6.配置hosts文件
cat /etc/hosts 10.0.0.51 db01 10.0.0.52 db02 10.0.0.53 db03
7.测试
[root@db-01 ~]# redis-cli -h db01 [root@db-01 ~]# redis-cli -h db01 db01:6379> set k1 v1 OK db01:6379> get k1 "v1" db01:6379>
redis基本操作命令
插入数据
set k1 v1
set k2 v2
set k3 v3
全局命令
1.查看所有的key(非常危险,有挂服务的危险)
keys *
2.查看有多少个key,注意,是估值
DBSIZE
3.查看是否存在这个KEY
EXISTS k1
EXISTS k1 k2 k3
状态码:
0表示这个key不存在
1表示这个key存在
N 表示有的N个key存在
4.删除key
DEL k1
DEL k1 k2 k3
状态码:
0表示这个key不存在
1表示这个key存在,并且删除成功
N 表示有的N个key存在,并且删除N个Key
5.键过期
5.1设置过期时间
EXPIRE k1 100
5.2取消过期时间
PERSIST k2
5.3状态码:
0: 表示这个key原来就没有设置过期时间
1: 表示这个key存在过期时间,并且取消成功
5.4查看key是否过期
TTL k1
5.5状态码:
-1: 这个key存在,但是没有设置过期时间
-2: 这个key不存在
N: 表示这个key还有多久过期,时间是秒
ps:过期后的key直接会被删除
字符串操作:
1.设置一个key
set k1 v2
2.查看一个key
get k1
3.设置多个key
MSET k1 v1 k2 v2 k3 v3
4.查看多个key
MGET k1 k2 k3
5.天然计数器
set k1 100
INCR k1#默认加1
INCRBY k1 N#加N
列表:
1、插入列表:
LPUSH:从列表左侧插入数据
RPUSH:从列表右侧插入数据
db01:6379> LPUSH list1 A
(integer) 1
db01:6379> LPUSH list1 B
(integer) 2
db01:6379> LPUSH list1 C
(integer) 3
db01:6379> RPUSH list1 D
(integer) 4
2、查看列表的长度:
db01:6379> LLEN list1
(integer) 4
3、查看列表的内容:
db01:6379> LRANGE list1 0 -1
1) "C"
2) "B"
3) "A"
4) "D"
5、删除列表元素:
LPOP: 从列表左侧删除
RPOP: 从列表右侧删除
db01:6379> LPOP list1
"C"
db01:6379> RPOP list1
"D"
db01:6379> LRANGE list1 0 -1
1) "B"
2) "A"
6、删除列表内容:
db01:6379> DEL list1
(integer) 1
哈希:
生成一个hash类型:
db01:6379> hmset user:1000 username qmf age 27 job it
OK
查看hash里的一个值
db01:6379> HGET user:1000 job
"it"
db01:6379> HGET user:1000 username
"zhangya"
查看hash里的多个值
db01:6379> HMGET user:1000 username age job
1) "qmf"
2) "27"
3) "it"
查看hash里的所有的值
db01:6379> HGETALL user:1000
1) "username"
2) "qmf"
3) "age"
4) "27"
5) "job"
6) "it"
集合:
1、创建集合
sadd set1 1 2 3
sadd set2 3 4 5
2、查看集合的成员:
db01:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
db01:6379> SMEMBERS set2
1) "3"
2) "4"
3) "5"
3、查看集合的差集,以前面一个集合为基准对比后面的
db01:6379> SDIFF set1 set2
1) "1"
2) "2"
db01:6379> SDIFF set2 set1
1) "4"
2) "5"
4、查看集合的交集
db01:6379> SINTER set1 set2
1) "3"
5、查看集合的并集
db01:6379> SUNION set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6、集合不允许出现重复的值
db01:6379> SADD set1 1 2 3 4 5 6 6 7 7
(integer) 4
db01:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"