Redis简单介绍

1. 何为NoSQL

nosql是Not Only Sql的缩写,指不仅仅是sql,是一种全新的数据库理念。泛指非关系型数据库。

关系型数据库

  1. 关系型数据库基于数据表,各数据表之间有外键相关联
  2. 关系型数据库是要持久化到磁盘上

非关系型数据库

  1. 非关系型数据库没有表结构,数据在文档中以键值对(K-V)存储
  2. 非关系型数据库是在内存中存储,存取数据较快
  3. 灵活性高,容易扩展。没有关系束缚,扩展容易。

Redis

Redis是c语言开发的非关系型数据库。它的存储性能很高,50个请求执行100000次,读的速度是110000次/s,写的速度是81000次/s。

Redis安装

  1. 安装redis编译的c环境,yum install gcc-c++
  2. 将redis-5.0.8.tar.gz上传到Linux系统中
  3. 解压到/usr/local下 tar -xvf redis-2.6.16.tar.gz -C /usr/local
  4. 进入redis-2.6.16目录 使用make命令编译redis
    在redis-2.6.16目录中 使用make PREFIX=/usr/local/redis install命令安装 redis到/usr/local/redis中
  5. 拷贝redis-2.6.16中的redis.conf到安装目录redis中
  6. 启动redis 在bin下执行命令redis-server redis.conf
  7. 如需远程连接redis,需配置redis端口6379在linux防火墙中开发
    /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
    /etc/rc.d/init.d/iptables save

value数据类型
value常用的数据类型是5种:字符串类型、散列类型(hash)、列表类型(list)、集合类型(set)、有序集合类型(sortSet)

字符串类型(String)

1
set key value #存值
get key #取值
Redis简单介绍
还可以存储json类型数据
Redis简单介绍

2
mset key value [key value] #一次设置多个K-V
mget key [key] #一次去多个值
Redis简单介绍
Redis简单介绍

3
incr key #j将原来的值加一
incrby key incrValue #将原来的值加incrValue
incrbyfloat key float #将原来的值加float(可为小数)
Redis简单介绍
可以应用在热度,点赞,粉丝数等场景

4
setex key second value #设置key在second秒后失效
Redis简单介绍
可以应用在抽奖倒计时场景

散列类型(hash)
Redis简单介绍
新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
需要的存储结构:一个存储空间保存多个键值对数据
底层使用hash表实现数据结构
hash结构优化:
field数量较少时,底层是类数组结构
field数量较多时,底层是hashmap结构

hset key field value #添加数据
hget key field #提取数据
Redis简单介绍
hmset key field value [field value] # 一次添加多条数据
hmget key field [field] # 一次去多条数据
hgetall key # 取出全部数据
Redis简单介绍

hlen key # 存储的数据条数
Redis简单介绍
hexists key field # key中是否存在field字段
Redis简单介绍

hkeys key # 返回key的所有field字段名
hvals key # 返回key的所有field字段值
Redis简单介绍

hincrby key field incrment
hincrbyfloat key field incrmentFloat
Redis简单介绍

hash注意事项

  1. hash的value只允许存储字符串,不可以是其他数据类型,不允许嵌套(禁止套娃)
  2. 每个hash可以存2^31-1条
  3. hash类型十分贴近对象类型,但hash并不是为了存储对象而设计的,不可滥用
  4. hgetall key 中的field过多时,查取的速度比较慢,有可能会成为数据访问的瓶颈

hash应用场景
可以应用于购物车场景
Redis简单介绍