Redis简介
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
windows下载
官网不支持windows版本 没有下载选项
但是微软团队在维护windows的redis
下载链接:
https://github.com/MicrosoftArchive/redis/releases
下载完成后解压
双击redis-server.exe出现如下界面
再双击redis-cli.exe 输入ping 出现 PONG 表示成功
linux服务端启动
sudo /etc/init.d/redis-server status | start | stop | restart
redis 附加功能
1、持久化
将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复
2、过期键功能
为键设置一个过期时间,让它在指定时间内自动删除
3、节省内存空间
音乐播放器,日播放排名,过期自动删除
4、事务功能
原子的执行多个操作
5、主从复制
6、Sentinel哨兵
字符串类型特点
1、字符串、数字,都会转为字符串来存储
2、以二进制的方式存储在内存中
列表数据类型特点
1、元素是字符串类型
2、列表头尾增删快,中间增删慢,增删元素是常态
3、元素可重复
4、最多可包含2^32 -1个元素
5、索引同python列表
Hash数据
1、由field和关联的value组成的键值对
2、field和value是字符串类型
3、一个hash中最多包含2^32-1个键值对
优点
节省内存:字段小于512个value不可超过64字节
缺点:
存储消耗大于字符串结构
集合数据类型
1、无序、去重
2、元素是字符串类型
3、最多包含2^32-1个元素
五大数据类型应用场景
字符串:常规计数(微博数粉丝数)
hash:存储部分需要可能变更的信息(用户信息)
list : 消息队列
set:存储并计算关系(微博关注人,共同关注,共同爱好)
sortedset 各种排行榜
事务
mult 开启事物
exec 提交事物
discard 取消事物
有序集合
1、有序、去重
2、元素是字符串类型
3、每个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素(分值可以相同)
4、最多包含2^32-1元素
切换库(number的值在0-15之间,db0 ~ db15)
Redis基本语法
select number 切换库 [number是库名]
redis中有16个库 **0-15**
keys 表达式 # keys *
代表查找当前库所有的键 key 键 查找指定的键
这里我创建了一个键为 is_key
键的数据类型
type key如果没有键会显示none
键是否存在 exists key
[key]表示键名
存在返回 (integer) 1 不存在返回 (integer) 0
删除键
del key
键重命名
rename key newkey
key表示旧键名 newkey表示新键名
清除当前库中所有数据 (慎用)!!!
flushdb
清除所有库中所有数据**(慎用)!!!**
flushall
字符串使用
set key value
设置一个字符串类型的redis数据 key为键 value为值
这里我设置了一个键为is_key 值为abc
get key
获取一个键的值
这里我设置了一个键为is_key值为abc
set key value nx
当键不存在时才会创建 可以看到is_key已经存在不会创建成功
set key value ex 过期时间
这里我设置了一个is_del 过期时间为10秒
mset k1 v1 k2 v2
string也可以设置多个键值
K1代表第一个键 v1代表第一个值
K2代表第二个键 v2代表第二个值
mget k1 k2
获取多个键的值