1、redis是什么
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
2、支持的语言
C、C#、C++、PHP、Python 、Go、Java、Objective-C、R、Ruby等大多数计算机语言。
3、redis的应用场景有哪些
1、会话缓存(最常用)
2、消息队列,比如支付
3、活动排行榜或计数
4、发布、订阅消息(消息通知)
5、商品列表、评论列表等
4、redis数据类型
Redis一共支持五种数据类:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。
(1)string(字符串)
它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。
(2)hash(哈希)
redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象
(3)list(列表)
是redis简单的字符串列表,它按插入顺序排序
(4)set(集合)
是string类型的无序集合,也不可重复
(5)zset(sorted set 有序集合)
是string类型的有序集合,也不可重复
sorted set中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set 因此非常适合实现排名
5、redis常用命令
hdel:删除字段 hdel user2 name
list数据类型的命令
lpush:左存 例如:lpush key1 1 2 3 ;向key1集合中放入1,2,3三个数;
lrange:取值 例如 lrange key1 0 -1;取出key1 中所有的数据,命令格式:lrange 集合名称 开始索引 结束索引(结束索引为-1时取出所有的数据)
rpush:右存,例如:rpush key1 7 8 9 向key1中保存7,8,9
再取一次 lrange key1 注意一下格式
lpop:从左边弹出数据(删除最左边) 例如 lpop key1 弹出key1 集合的最上边的值
rpop:从右边弹出数据(删除最右边) 例如 rpop key1 弹出key1 集合最底部的值
左右各弹出一次,使用lrange key1 0 -1查询所有数据,显示如下:
set数据类型的命令(无序,不允许重复)
sadd :保存数据 例如sadd key1 1 2 3 4 5 向集合key1 中添加 1,2,3,4,5
smembers:查询数据 例如 smembers key1 查询key1 中的所有句酷
sismember:判断集合中是否存在某个元素 例如 sismember key1 10 判断集合key1中是否存在10 如果存在就返回1,不存在返回0;
sdiff:集合运算差集,例如sdiff key1 key2 求key1和kye2的差集 key1-key2
sinter:交集 例如 sinter key1 key2 求key1和key2的交集
sunion:并集 例如sunion key1 key2 求key1和key2的并集
zset数据类型的命令(有序集合,redis会自动排序)
zadd:添加 例如 zadd zkey1 10 zhangsan 10 lisi 15 wangwu
zrange :查询(已经自动排序)
例如:zrange zkey1 0 -1 withscores(如果命令不带withscores则不会显示分数)
zrem:删除;例如zrem zkey1 wangwu 删除王五
zscore:查询单个分数 zsore zkey1 lisi 查询zkey1集合中lisi的分数
zrevrange:降序排序 例如: zrevrange zkey1 0 -1 withscores(命令中带有withscores则会显示分数)
通用命令:
keys:返回满足给定pattern的所有key 例如keys *ad 查询所有以ad结尾的key
ping:检查服务器是否还活着,发一个ping,服务器会响应一个PONG
6、redis的发布与订阅
redis发布与订阅(pub/sub)是它的一种消息通信模式,一方发送信息,一方接收信息。
7、redis持久化
redis持久有两种方式:Snapshotting(快照),Append-only file(AOF)
Snapshotting(快照)
1、将存储在内存的数据以快照的方式写入二进制文件中,如默认dump.rdb中
2、save 900 1
#900秒内如果超过1个Key被修改,则启动快照保存
3、save 300 10
#300秒内如果超过10个Key被修改,则启动快照保存
4、save 60 10000
#60秒内如果超过10000个Key被修改,则启动快照保存
Append-only file(AOF)
1、使用AOF持久时,服务会将每个收到的写命令通过write函数追加到文件中(appendonly.aof)
2、AOF持久化存储方式参数说明
appendonly yes
#开启AOF持久化存储方式
appendfsync always
#收到写命令后就立即写入磁盘,效率最差,效果最好
appendfsync everysec
#每秒写入磁盘一次,效率与效果居中
appendfsync no
#完全依赖OS,效率最佳,效果没法保证
8、redis 性能
可同时执行百万次的请求