Redis
(一)redis的介绍
1) 什么是redis
c语言编写的键值非关系型数据库。主要用于高速访问的内容缓存,
redis也可以实现持久化,支持事务操作。
常用数据类型: string(字符类型),hash(散列类型),lists(列表类型),set(集合类型),
sortedSet(有序集合)。
2) 背景
3) redis应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
(二) 安装Redis
1)下载
http://www.redis.io
http://www.redis.cn
2) redis安装
A. 准备: gcc环境 yum -y install gcc-c++
make命令: yum -y install make
B. 下载解压
tar -zxvf redis-4.0.10.tar.gz -C /opt/
C. 切换到目录,编译
make:编译
清理: make distclean
D. 测试
make test(安装tcl)
E. 安装
make install(默认安装:/usr/local/bin)
make install PREFIX=/usr/local/redis
F. 复制redis.conf到etc
cp redis.conf /etc/
G. 环境变量
export REDIS_HOME=/usr/local/redis
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:$REDIS_HOME/bin
source /etc/profile
3) redis启动(服务器端+客户端)
A. 前端启动(服务器前端运行)
服务器: ./redis-server
关闭:
强制关闭:ctrl+c
正常命令: ./redis-cli shutdown(推荐)
客户端:./redis-cli
B. 后端启动
修改配置文件:
bind 192.168.2.101(修改绑定ip)
daemonize yes(修改作为后台守护程序运行)
运行服务器端:
./redis-server /etc/redis.conf
关闭服务器端:
kill杀死
./redis-cli shutdown(推荐)
自带客户端连接:
./redis-cli -h ip地址 -p 端口
图形客户端:
需要关闭防火墙
4) jedis客户端
(三)Redis数据类型
1) string类型
A. 赋值和取值
set key value:赋值
get key:取值
getset key value:取值并赋值
mset k1 v1 k2 v2:赋值多个值
mget k1 k2:获取多个值
B. 删除
del key
C. 数值增减
incr:增长1
incrby:设置增长数
decr:减少1
decrby:减少整数值
D. 其他命令
append key value:追加数值
strlen key:获取长度
2) hash类型
散列类型,支持扩展key,提供字段属性,字段和字段值之间实现映射。
字段值只支持string类型。
A. 设置和获取值(设置值不区分插入和更新,0代表更新,1代表插入)
192.168.2.101:6379> HSET user:001 name zs
(integer) 1
192.168.2.101:6379> HSET user:001 name ls
(integer) 0
192.168.2.101:6379> HGET user:001 name
"ls"
192.168.2.101:6379> HMSET user:001 name zs age 12
OK
192.168.2.101:6379> HMGET user:001 name age
1)"zs"
2) "12"
有该key则不赋值,没有则赋值
192.168.2.101:6379> HSETNX user:001 name ww
(integer) 0
192.168.2.101:6379> HGETALL user:001
1)"name"
2) "zs"
3) "age"
4)"12"
5)"sex"
6) "man"
B. 删除
hdel
C. 增加
HINCRBY user:001 age 3
D. 其他
192.168.2.101:6379> keys *
1) "user:001"
2) "k1"
3) "id"
4) "k2"
5) "k3"
192.168.2.101:6379> EXISTS k1
(integer) 1
192.168.2.101:6379> EXISTS k8
(integer) 0
192.168.2.101:6379> HEXISTS user:001 sex
(integer) 0
192.168.2.101:6379> HEXISTS user:001 name
(integer) 1
192.168.2.101:6379> EXISTS user:001
(integer) 1
192.168.2.101:6379> TYPE user:001
hash
192.168.2.101:6379> TYPE k1
string
192.168.2.101:6379> HKEYS user:001
1) "name"
2) "age"
192.168.2.101:6379> HVALS user:001
1)"zs"
2) "15"
192.168.2.101:6379> HLEN user:001
(integer) 2
E. 使用场景
存储对象信息(用户,商品信息等)
3) list类型
列表类型,list采用链表存储,操作从两端操作。
A. 从两端添加数据
192.168.2.101:6379> LPUSH list1 a b c
(integer) 3
192.168.2.101:6379> RPUSH list1 d e f
(integer) 6
B. 查看列表
LRANGE list1 0 -1
index:从0开始
start stop
-1代表最后一位
C. 从两端弹出值
192.168.2.101:6379> LPOP list1
"c"
192.168.2.101:6379> RPOP list1
"f"
D. llen查看list长度
E. 删除指定的数据
LREM list1 2 d
删除前count个value值
count>0 从左往右
count < 0 从右往左
count =0 删除所有
F. 查看指定索引的值
192.168.2.101:6379> LINDEX list1 0
"a"
G. 保留片段
192.168.2.101:6379> LTRIM list1 0 1
H. 插入指定位置
LINSERT list1 after a c
I. 复制列表
RPOPLPUSH list1 list2
J. 使用场景
用于商品评论
4) set
无序,不重复
A. 添加和删除元素
192.168.2.101:6379> SADD set1 a b c
(integer) 3
192.168.2.101:6379> SADD set1 a
(integer) 0
192.168.2.101:6379> SADD set1 d
(integer) 1
192.168.2.101:6379> SREM set1 d
(integer) 1
B. 查看所有元素
SMEMBERS set1
C. 判断是否存在
SISMEMBER set1 a
D. 运算
192.168.2.101:6379> SUNION set1 set2
1)"c"
2) "b"
3) "d"
4) "a"
192.168.2.101:6379> SINTER set1 set2
1 "c"
2) "b"
192.168.2.101:6379> SDIFF set1 set2
1)"a"
192.168.2.101:6379> SDIFF set2 set1
1)"d"
E. 其他
scard:长度
spop:弹出
5) sortedset
又名zset,唯一且可排序。
为每个元素设置分数,根据分数实现排序。
A. 添加元素 zadd
添加元素和分数,如果该元素存在则修改分数并返回0;如果不存在返回1.
192.168.2.101:6379> ZADD zset1 80 zs 90 ls 70 ww
B. 查看分数
ZSCORE zset1 zs
C. 删除元素
ZREM zset1 zl
D. 顺序输出
ZRANGE zset1 0 -1 withscores
E. 倒序输出
ZREVRANGE zset1 0 -1 withscores
F. 排名
ZRANK ZSET1 ZS
ZREVRANK zset1 ls
G. 指定分数范围排序
最小分数 最大分数 offset length
ZRANGEBYSCORE zset1 80 90 withscores limit 0 1
H. 增加某个成员分数
ZINCRBY zset1 5 ww
I. 查看元素个数
zcard zset1
J. 统计范围内的元素个数
ZCOUNT zset1 85 90
K. 根据排名删除范围内元素
ZREMRANGEBYRANK key start stop
L. 根据分数删除范围内元素
ZREMRANGEBYSCORE key start stop
M. 应用场景
排行榜
(四) keys命令
- keys pattern
- exists:判断keys存在
- del:删除key
- rename:重命名key
- type:查看类型
- 设置key的生存时间
EXPIRE key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除
TTL key 查看key剩余的生存时间
PERSIST key 清除生存时间
PEXPIRE key milliseconds 生存时间设置单位为:毫秒