redis工作所处位置图示
Redis是Remote Dictionary Server(远程数据服务)的缩写
由意大利人 antirez(Salvatore Sanfilippo) 开发的一款 内存高速缓存数据库
该软件使用C语言编写,它的数据模型为 key-value
它支持丰富的数据结构,比如 String list hash set sorted set。
可持久化,保证了数据安全。
为什么使用
1)是一款数据库产品,有数据存储功能
2)高速读取数据(in-memory)
3)减轻数据库负担
4)有集合计算功能(优于普通数据库和同类别产品)
5)多种数据结构支持
什么场合使用
1)[Sort Set]排行榜应用,取top n操作,例如sina微博热门话题
2)[List]获得最新N个数据 或 某个分类的最新数据
3)计数器应用
4)[Set]sns(social network site)获得共同好友
5)[Set]防攻击系统(ip判断)等等
对比memecache
memcache key 的value值 存储1M 不支持数据持久化(重启数据丢失) 存储数据比较单一 多核多线程
redis key 的value值存储512M 支持数据持久化(重启之后数据会自动加载) 有多种数据格式,可以满足更多的使用需要 单核单线程
nosql not only sql 不仅仅是sql 翻译 非关系性数据库 没有连表概念,不能够进行连表查询。 memcache和redis同属nosql 数据库。
redis安装
redis是一款开源产品,linux也是开源产品,redis默认支持开发平台是linux、unix等。
window下的redis,是由微软技术小组定制开发维护。
redis官方网站:https://redis.io/
windows安装
windows版本一般都滞后于redis源码版本 https://github.com/MicrosoftArchive/redis/releases
第一步:把redis文件部署到运行目录,路径不能够有中文
第二步:redis的windows启动服务安装 使用管理员cmd执行
windows下的redis服务安装
redis-server --service-install redis.windows-service.conf
redis-server --service-uninstall
注意windows的redis,在使用存在一些不稳定下,只作为测试开发。尤其是在一些新版本中。如果出现问题,就重启redis服务,再重新连接使用即可。
简单使用
windows下连接redis
redis-cli.exe
操作使用
key
key的命名规则不同于一般语言,键盘上除了空格、\n换行外其他的大部分字符都可以使用。
像“my key”和“mykey\n”这样包含空格和换行的key是不允许的。
我们在使用的时候可以自己定义一个Key的格式。
例如 object-type:id:field
Key不要太长。占内存,查询慢。
Key不要太短。像u:1000:pwd 就不如 user:1000:password 可读性好
set 设置key get 获取key的value
注意:默认redis提供了16个库,一个业务使用一个库或者不同的value数据类型,存放到不同库里。
select index 切换库 下表从0开始
move name 1 移动name到库1 flushdb 删除当前库数据 flushall 删除所有库数据
string
string是redis最基本的类型
redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
单个value值最大上限是512M。
如果只用string类型,redis就可以被看作加上持久化特性的memcache
list
list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。
这使得list既可以用作栈,也可以用作队列。
队列 先进先出 一端进 一端出
栈 先进后出 同一端进出
set
redis的set是string类型的无序集合。
set元素最大可以包含(2的32次方-1)个元素。
关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。
两个人的朋友圈
xiaomingFR xiaohua xiaohong xiaobenben xiaoniuniu cat do
tomFR jerry jim rose marry cat dog
zset
和set一样sorted set也是string类型元素的集合,
不同的是每个元素都会关联一个权。
通过权值可以有序的获取集合中的元素
设计需求
Top
新闻资讯点击热榜
id score hit
11 5 10000
22 10 5000
44 55 100
33 3 50000
hash
hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。
key=》value
field(域) 对应value
设计需求:
存储两条数据
Person1 name tom age 18 job php
Person2 name jim age 19 job java