第七天课堂笔记
今日目标
非关系型数据库(nosql【not only SQL】数据库)
Redis的非关系型数据库
Redis的安装和配置
Redis常见数据类型
Redis特性
nosql数据库
not only sql数据库,非关系型数据库,往往采用类似于json来存储数据。
结构化和非结构化的问题
非结构化的数据,灵活多变,根据具体情况,可以对应灵活选择数据存储的结构
结构化数据,往往固定不变。
nosql数据库缺点:
目前没有统一的标准,每一个nosql数据库都有存在不一样的语法结构,学习成本较高。
Redis数据库
Redis(remote dictionary server)远程字典服务,Redis中的数据采用KV键值对的方式存储的数据。
官网网站:redis.io/
Redis中文网:Redis中文网/
Redis还是免费开源的数据库,但是注意它最新的开源协议,为了针对云服务器提供商。
Redis的安装和配置
Redis官方没有提供window版本的Redis安装包,Redis官方提供的仅仅是C语言源码包,Linux直接编译安装,window中就比较麻烦。
17年之前,微软官方的开源组织帮助编译了一个window的安装包(在3.x版本之后,不再更新)。
后期有github上一个个人开发者在编译window的安装包。
如果使用.msi安装方法,直接下一步即可。
如果采用压缩包:
下载安装包,解压后,打开文件夹,内容如下:
为了方便启动,我们在该目录下新建一个 startup.cmd 的文件,然后将以下内容写入文件:
redis-server redis.windows.conf
这个命令其实就是在调用 redis-server.exe 命令来读取 redis.window.conf 的内容,我们双击刚才创建好的 startup.cmd 文件,就能成功的看到 Redis 启动:
或者另一种方法打开一个cmd窗口使用cd命令切换目录到redis目录下:
输入启动命令:
redis-server.exe redis.windows.conf
在启动时候得另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了,切换到redis目录下运行
redis-cli.exe -h 127.0.0.1 -p 6379
Redis的配置
Redis在启动时,会加载一个配置文件,该配置决定了Redis的大多数性能问题
bind ip
port 6379
daemonize yes Linux存在,window中没有
dbfilename dump.rdb
dir ./
requirepass 密码
slaveof mastip mastport 5.0之前使用这个
replicaof mastip mastport 5.0之后
其他的一些重要的配置选项,大家要根据注释自己理解和使用。
redis的特点
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
redis的常见数据类型
redis随着版本的升级,功能也在进一步的升级,很多好用、针对特定环境的数据都出现了,像经纬度等等,但是核心的数据主要存在五个,这五个数据类型也被称为Redis的基本数据类型。
字符串
hash table
List
set
sorted set
Redis中,key的类型都是字符串,值的类型可以是任何一种Redis支持的数据类型。
字符串类型
存储的值,类型是字符串
set key value
get key
setex key secode value
mset key value key value ......
mget key key ......
incr key key + 1
incrby key num key + num
decr key key - 1
decrby key num
append key value:将value的值拼接到x后面
strlen key:获取key对应的值的长度
setnx key value
key相关的命令
keys pattern:查找键,支持正则
exists key:查找键是否存在,存在返回1,否则返回0
type key:查看键对应的值的类型
del key:根据key删除键值对
expire key seconds:给key设置过期时间
ttl key:查看键的有效时间
persist key
select index
move key
dbsize
Info
flushdb
flushall
help
@类型
命令
指令
hash类型
hset key field value
hget key field
hmset key field value field value
hmget key field field
hget key field :获取key对应的值
hmget key field field:获取多个key对应的value值
hgetall key:获取所有属性和值
hkeys key:获取所有的属性
hlen key:获取包含属性的个数
hvals key:获取所有的值
hexists key field:判断属性是否存在
hdel key field field:根据属性名称删除属性及值
hstrlen key field:返回值的字符串长度
hsetnx key value
hincrby key field value
list列表
set集合
底层都是hash table实现的,哈希表的特性:无序的、不重复的
zset集合
底层就是hash tabl,对哈希表实现了一种包装,为每一个元素实现了权重