一、NOSQL 的四大分类

  • 键值(Key-Value) 存储
  • 列存储(HBase)
  • 文档数据库(MangoDB)
  • 图形数据库

二、特点

  • 易扩展
  • 灵活的数据模型
  • 大数据量
  • 高性能
  • 高可用

三、Redis

redis 由 c 语言开发的一个高可用的非关系型数据库

3.1 数据类型

高性能键值对数据库,支持的键值数据类型

  • 字符串类型
  • 列表类型
  • 有序集合类型
  • 散列类型
  • 集合类型

3.2 应用场景

  • 缓存
  • 任务队列
  • 网站访问统计
  • 数据过期处理
  • 应用排行榜
  • 分布式集群架构中的 session 分离

四、操作 Redis

4.1 String 类型

  1. 赋值: set ‘key’ ‘value’
  2. 取值:get ‘key’
  3. 获取值,再设置值:getset ‘key’ ‘value’
  4. 删除:del ‘key’ 返回一个 Integer,如果继续删除,会返回 null
  5. 值递增1:incr number (值不存在,就会线设置为0,再+1,如果存在,并且是数字字符串,就会转型,否则报出异常)
  6. 值递减1:decr num (值不存在,默认赋值1,然后-1)
  7. 递增指定值:incrby num 5 (值不存在,默认赋值为0,再加5)
  8. 递减指定值:decrby num 5 (值不存在,默认赋值为0,再减5)
  9. 字符串拼接(追加):append num 5 (返回值为字符串长度)

4.2 Hash

适合存储对象类型数据

1.存值(一次存一个): hset myhash username jack

  1. 存值(一次存多个):hmset myhash2 username rose age 21
  2. 取值:hget myhash username
  3. 取值多个:hmget myhash2 username age
  4. 取所有值:hgetall myhash
  5. 删除:hdel myhash2 username age
  6. 删除整个:del myhash2
  7. 递增:hincrby myhash age 5
  8. 判断 key 中的某个属性是否存在: hexists myhash username
  9. 获取所有的属性个数:hlen myhash
  10. 获取所有的 key:hkeys myhash
  11. 获取所有的 val:hvals myhash

4.3 list

  • ArrayList 使用数组方式
  • LinkedList 双向链表方式
  • 双向链表添加 和 删除数据

两端添加:

  • lpush mylist a b c (c->b->a) 返回长度
  • rpush mylist a b c (a->b->c)

查看列表

  • lrange mylist 0 5 (可以是负数索引) 0 -1 (第一个到最后一个) 0 -2 (第一个到倒数第二个)

两端弹出

  • lpop mylist
  • rpop mylist

获取列表元素的个数

  • llen mylist

扩展命令

  • lpushx mylist x (x存在不会插入)