第七天课堂笔记
今日目标
非关系型数据库(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,对哈希表实现了一种包装,为每一个元素实现了权重