一、概述

 

1、关系式数据库

a) 以表(行和列)存储数据

b)建立在关系模型上的数据库

 

2、nosql: not onle mysqlnosql数据库的类型】

3、Web2.0对数据库的要求

a、能够支持数据库高并发读写的需求

a) 关系式数据库、支持上万次的读取操作

b) Nosql支持过百万的pv

b、海量数据的高效率的存储和访问的需求

C、数据库的高扩展性

D、字段不固定的应用

二、数据库类型

SequoiaDB:巨杉数据库【IBM生产的分布式大型数据库,国外用的比较多,应用在金融、银行】

 

HBASE:分布式数据库、

 

Cassamdra: 分布式数据库、主要用户fackook

 

Memcache: 速度快、不可备份

优点;可以利用多核优势,单实力吞吐量极高,支持十几万QPS(QPS:对一个特定的服务器在规定时间内处理流量多少的标准)

Bug较少

缺点:不能持久存储,无法进行数据同步,支持简单数据结构

 

Mangodb:

优点:文档型的数据库,查询功能强大,支持索引,最接近关系式数据库的nosql

缺点:结构单一、不支持事务功能

 

Redis

优点:支持多种数据结构

支持数据化存储,支持数据同步,支持事务功能 

缺点:

 

三、redis安装

 

最新版:3.0.5

实验版本:3.0.3

www.redis.cn   中国资料官网

http://redis.io   官方站

安装resdis

#yum -y install gcc*

将下载好的redis安装包拷贝到系统里两种方法:

1、挂载镜像光盘

2、利用wscp传出到 /usr/src 目录中

#cp /mnt/cdrom/* /usr/src/

#tar -zxf redis-3.0.3.tar.gz

#make

%解压redis 

%直接make安装

%安装结束后系统提示建议操作“make test”检测编译安装环境

#make test

%报错了;;;提示tcl8.5以上的版本才可以;

%安装tcl-8.5.7-6.el6.x86_64.rpm

#cd /usr/src

#yum -y install tcl-8.5.7-6.el6.x86_64.rpm

%tcl-8.5.7-6.el6.x86_64.rpm 这个软件是第三方软件,系统盘中没有,需要下载;

#cd /usr/src/redis-3.0.3

#make test

# make PREFIX=/usr/local/redis install

%定安装位置,如果没有指定安装位置PREFIX=/usr/local/redis,则make install会把redis安装到/usr/local/bin/目录下

 

# cd /usr/local/redis/

%安装完成以后检查一下/usr/local/redis/ 查看是否有redis这个路径

#make install

#cd /usr/local/redis/bin/

%可以查看到redis安装的6个工具

# cd /usr/src/redis-3.0.3

# cp redis.conf /usr/local/redis/

%将配置文件拷贝到安装目录下,这样redis就可以正常启动了

#/usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf

$启动redis;;;启动时会锁定命令行,所以需要我们在后台运行redis

#vim /usr/local/redis/redis.conf

daemonize no改为

daemonize yes    #后台启动

%第37行

#ps aux | grep redis

 

测试;;;

重新开一个本机的窗口来测试redis

/usr/local/redis/bin/redis-cli -h localhost -p 6379

%客户端连接

Redis端口号6379

-h  IP连接指定的redis服务器

-p  6379:指定redis服务器的端口

-a  密码:使用密码登录

-n 数据库号:指定连接哪个数据库

--rawredis支持存储中文

 

关闭redis

[root@localhost ~]# /usr/local/redis/bin/redis-cli shutdown

 

 

[root@localhost ~]# pkill  -9 redis

 

四、基本操作

1、数据类型: string(字符串)hashlist(双向队列)、set(集合)、zset(有序集合)

2string  字符类型

set 

get 

setnx 设置新键,若存在则放弃操作

ttl 查看生存周期,如果是-1, 表示键存在,但没有设置生存周期,如果是-2,表示键不存在,如果是秒,返回剩余周期

setex 设置生存周期

setrange 替换字符串

mset 同时设置多个新键

mget 同时获取多个新建

msetnx 同时设置多个新键 防覆盖 0为失败 1为成功

getset 显示原有值,并设置新值

getrange 获取范围值

incr 增加1

decr 减少1

incrby 增加指定值

decrby 减少指定值

append 追加值

strlen 查看长度

del 删除键

3hash 哈希类型

hset 

hget

hmget

hmset 

hexists 检查字段是否存在

hsetnx 添加字段,防止覆盖

hlen 查看字段总数

hkeys  查看键对应的所有字段名称

hvals  查看键对应的所有值的名称

hdel  删除字段

4list 双向队列/双向链表结构

lpush 添加链

lrange 显示链中的内容

lset  替换链中的指定内容

linsert  向链中插入指定内容

lpop  删除第一个数据

rpop  删除最后一个数据

lrem  删除重复数据

llen  查看链中数据的个数

5set  集合 string类型的集合,对这个集合取并集、交集、差集

sadd  创建集合

smembers  查看集合内容

srandmember  随机抽取集合数据

spop  随机删除集合数据

scard  统计集合中数据的个数

sismember 查询某个数据是否属于集合

sdiffstore  查询差集

格式: sdiffstore 新集合 集合集合

       统计集合1的差集至新集合

sinter 查询交集

sunion  查询并集

smove  移动数据至指定集合