一、Redis快速入门
一、Redis是什么
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
- Redis软件安装在磁盘;
- Redis数据存储在内存;
二、快速理解Redis的使用
Redis是一种键值对(Key-Value)高性能缓存数据库,支持string、hash、list、set、zset类型存储。
就像JAVA的map键值对差不多,例如:
Map<String,String> map = new HashMap<>();
map.put("name","zhangsan");
map.get("name");
比如说,数据库有一张Order订单表,主键是orderid
orderid | ordertime | ordermoney | orderstatus |
---|---|---|---|
1 | 2019-10-9 08:18:11 | 12 | 0 |
2 | 2019-10-9 08:28:22 | 12 | 0 |
3 | 2019-10-9 08:48:43 | 5 | 0 |
使用Redis如何存储数据呢?
Key:使用业务主键orderid:1
Value:{orderid:1,ordertime:2019-10-9 08:18:11,ordermoney:12}
存入Redis: set orderid:1 {orderid:1,ordertime:2019-10-9 08:18:11,ordermoney:12}
Redis命令参考
http://redisdoc.com/
三、Redis解决了什么问题
先从Redis缓存里查询数据,如果没有再到Mysql数据库里查询。
四、Redis特性
- 速度快
- 键值对的数据结构服务器
- 丰富的功能
- 简单稳定
- 持久化
- 主从复制
- 高可用和分布式转移
- 客户端语言多
五、Redis配置、启动、操作、关闭
可执行文件 | 作用 |
---|---|
redis-server | 启动redis |
redis-cli | redis命令行客户端 |
redis-benchmark | 基准测试工具 |
redis-check-aof | AOF持久化文件检测和修复工具 |
redis-check-dump | RDB持久化文件检测和修复工具 |
redis-sentinel | 启动哨兵 |
redis-trib | cluster集群构建工具 |
启动Redis
./redis-server redis.conf &
连接Redis
./redis-cli -h 192.168.44.101 -p 6379 -a 123456
关闭Reids
./redis-cli -h 192.168.44.101 -p 6379 -a 123456 shutdown
操作Redis
select 0 //默认是0数据库,默认16个数据库,通过select切换数据库
flushall //不建议使用,清空所有的库
set age 23 ex 10 //10秒失效
get age //获取age值,存在返回value,不存在返回nil
ttl age //查询当前age的剩余时间
setnx name zhangsan //不存在键name时,返回1设置成功,存在返回0设置失败
mset age 13 name lisi sex boy //批量插入
mget country city address //批量获取
incr count //整数自增+1
decr count //整数自减-1
incrby count 2 //整数自增+2
decrby count 2 //整数自减-2
incrbyfloat count 1.1 //浮点数自增+1.1
decrbyfloat count 1.1 //浮点数自减-1.1
set name hello; append name world //追加值
set name hello; strlen name;//统计字符串长度,中文占三个字节
set name helloworld;getrange name 2 4 //截取字符串,返回llo
///////////// HASH ///////////////
hmset user:1 name zhangsan age 18 //hash存储
hgetall user:1 //获取hash指定键的所有值
hset user:1 age 19//可以修改字段值
hincrby user:1 age 1//年龄+1
hincrbyfloat user:1 number 1.1 //浮点型+1.1
hdel user:1 age //删除属性
hexists user:1 name //是否存在name,存在返回1,不存在返回0
hkeys user:1 //返回所有的key
hvals user:1 //返回所有的值
///////////// List ///////////////
lpush user:1 d //从左插入
rpush user:1 d //从右插入
lpop user:1 d //从左取值
rpop user:1 d //从右取值
lrange user:1 0 -1 //从左到右全部取出
///////////// set ///////////////
//保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合
//最多可以保存2的32次方减1,除了支持增删改查,还支持集合交集、并集、差集
exists user //检查user键值是否存在
sadd user a b c //向user插入3个元素,返回3
sadd user a b //若再加入相同的元素,则重复无效,返回0
smembers user //获取user所有的元素,返回结果无序
srem user a //返回1,删除a元素
scard user //计算元素个数,返回2
sinter user:1:fav user:2:fav //计算共同爱好
///////////// zset ///////////////
//有序集合,常用于排行榜,不能有重复的成员
zadd user:1:zan 100 zhangsan //插入点赞数,返回操作成果数
zadd user:1 nx 100 zhangsan //键user:1必须不存在,主要用于添加
zadd user:1 xx incr 200 zhangsan //键user:1必须存在,主要用于修改,此时为300
zadd user:1 xx ch incr-299 zhangsan //返回结果1,300-299=1
zrange user:1 0 -1 withscores //查看点赞分数与成员名
zcard user:1 //计算成员个数
zrank user:1 zhangsan //正排序,返回名次 从0开始
zrevrank user:1 zhangsan //反排序,返回名次 从0开始
六、Redis全局命令
1. 查看所有键
keys * set hello world set user shangsan //不建议这么查,慢查询
2. 键总数
dbsize //如果存在大量键,线上禁止使用此指令
3. 检查键是否存在
exists key //存在返回1,不存在返回0
4. 删除键
del key //del hello user,返回删除键个数,如果键不存在,返回0
5. 键过期
expire key seconds //set name test expire name 10,表示10秒过期
ttl key //查看剩余的过期时间
6. 键的数据结构类型
type key //返回key的类型,键不存在返回none
七、重大版本
- 版本号第二位为奇数,为非稳定版本(2.7,、2.9、3.1)
- 第二位为偶数,为稳定版本(2.6、2.8、3.0)
- 当前技术版本是下一个稳定版本的开发版本,例如2.9是3.0的开发版本
上一篇: Metasploit快速入门(一)
下一篇: 一、Spring快速入门