数据库相关
存储数据类型分类:
结构化数据:可以通过二维表格形式表述这个数据
非结构化数据:不方便以二维表格的形式表述这种类型的数据
数据库分类
根据不同种存储数据类型分类分成两种不同类型的数据库:
结构化数据库sql
里面存储的数据类型是结构化数据,别称关系型数据库
非结构化数据库nosql
里面存储的数据类型是非结构化数据,别称非关系型数据库
列举
关系型数据库
一种结构化的数据库,创建在关系模型基础上一般面向于记录包括oracle、mysql、sqls erver、microsoft access、db2等
非关系型数据库
除了主流的关系型数据库外的是数据库,都认为是非关系型包括:Redis、mongbd、hbase、couhdb等
非关系型数据库产生的背景
high performance 对数据库高并发读写需求
huge storage 对海量数据高效存储与访问需求
high scalability && high availability 对数据库高可扩展性与高可用性需求
redis数据库和memcached设局库对比
redis
简介
redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式(关键词)
优点:
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化(内存写到磁盘,通过日志保证其数据不会丢失)
原子化
支持数据备份
Redis支持的数据类型
string(字符串)
是redis最基本的类型,可理解成与mamcached一样的类型,一个key对应一个value
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象
最大能存储512MB
设置键值对:set 键 值
获取键的值:get 键
让键的值自增长:incr 键
让键的值自降:decr 键
值自增长的幅度:incrby 键 3
值自降的幅度:decrby 键 3
hash(哈希)
redis hash是一个键值对集合,是一个string类型的field和value的映射表,适用于存储对象
添加hash数据:Hset 键 key 值
Hset hash1 key1 a
获取hash数据:Hget hash1 key1
获取多个hash数据Hmget hash1 field1
list(列表)
是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
实例:
lpush:从左边推入值
Lpush list1
lpop:从左边弹出值
Lpop list1
rpush:从右边推入值
rpop:从右边弹出值
llen:查看某个list数据类型的长度
Lrange list1 列出所有list1的值
set(集合)
是string类型的无序集合,通过hash表实现,所以添加删除查找的复杂 度都是0(1)
sadd命令:添加string元素到key对应的set集合,成功返回1,若已存在则返回0
sadd key member
scard:查看set数据中存在的数据个数
sismember:判断set数据中是否存在某个元素
srem:删除某个set数据中的元素
Smembers set1 (列出set1的所有值)
zset(sortedset:有序集合)
是string类型元素的集合,且不允许重复的成员
不同的是每个元素都会关联一个bouble类型的分数。redis正式通过分数来为集合中的成员进行从小到达排序
zset成员是唯一的,但分数可以(score)重复
添加元素到集合,若已存在则跟新score
zadd key score member
zcard:查询
zrang:数据排序
五种数据类型对比
安装 redis
tar zxvf redis-5.0.4.tar.gz
cd redis-5.0.4/
make
make install PREFIX=/usr/local/redis
cd /usr/local/redis/
ln -s bin/* /usr/sbin
cd
cd redis-5.0.4/utils/
./install_server.sh
Please select the redis port for this instance: [6379] #选择端口,直接enter,保持默认
Please select the redis config file name [/etc/redis/6379.conf] #配置文件路径
Please select the redis log file name [/var/log/redis_6379.log] #日志路径
Please select the data directory for this instance [/var/lib/redis/6379] #数据保存路径
Please select the redis executable path [] /usr/local/redis/bi