NoSQL 泛指非关系型数据库

特点:1.处理超大量的数据

   2.运行在便宜的pc服务器集群上

    3.击碎了性能的瓶颈

 

Redis是一个高性能的key-value数据库,存储的value类型包括string字符串、list链表、set(集合)、zset(有序集合)。数据缓存在内存中,也可以周期性的把更新的数据写入磁盘,或把修改的操作写入追加的记录文件中

 

Redis使用场合

1. application -> Redis

2. 应用程序直接访问Redis,只有当Redis访问失败时,才访问mysql 

 

Redis具体的使用场景

1.取最新的N个数据

2.排行榜应用,去TOPn操作

3.需要精确设定过期时间的应用

4.计数器应用

5.unique操作 获取某段时间所有排重值

6.实时系统,反垃圾系统

7.pub/sub构建实时消息系统 独有的发布与订阅

8.构建队列系统

9.缓存

 

Redis服务端的默认连接端口为6379

Mysql服务器的默认连接端口为3306

 

string类型

set 设置key对应的值为string类型的value

setnx nx是not exit 的意思。如果key已经存在则返回0

setex 设置key对应的值为string类型的value,并指定此键值对应的有效期

setrange 设置指定key的value值的子字符串 setrange name 6 126.com 将antik@qq.com 替换成antik@126.com 

mset 一次设置多个key的值 成功返回ok 失败返回0 表示任何值没有被设置

get 获取key对应的string值

getset 设置key的值 并返回旧值

getrange 获取子字符串    getrange name 0 5

mget 批量获取

incr 递增

incrby同incr类似 加指定的值  key不存在时侯会设置key 并认为原来的value为0

decr 同上面 自减

decrby

append 给指定的key追加value 返回新字符串长度

strlen 取指定key的value的长度

 

hashes类型

Redis hash 是一个string类型的field(字段)和value(值)的映射表 hash特别适合于存储对象

hset 设置hash field为指定值,如果key不存在,则先创建   hset user:001 name dz

hsetnx 设置hash field为指定的值 key 不存在则创建 存在则返回0

hmset 批量设置

hmget 批量获取

hincrby 同上面的incrby

hexists 测试指定field是否存在 存在则返回1 不存在则返回0

hlen 返回指定hash的field数量

hdel 删除指定hash的field

hkeys 返回hash的所以field

hvals 返回hash的所有val

hgetall 获取hash中全部的field和value

 

 

lists类型

list是一个链表结构。 主要功能是push pop 获取一个范围的所有值等。list既可以作为栈,又可以作为队列。Redis的list类型其实是每一个子元素都是string类型的双向链表。

lpush 在key对应list的头部添加字符串元素

lrange lrange mylist 0 -1 代表从头到尾依次全部取出表

rpush 从尾部添加元素

linsert 在key对应list的特定位置前后添加字符串    linsert mylist before "one" "three"

lset 设置list中指定下标的元素值    lset mylist 0 "world"

lrem 从key对应list中删除N个和value相同的元素  (n<0 从尾删除  n=0 全部删除)

ltrim 保留指定key的值范围内的数据

lpop 从list头部删除元素,并返回删除的元素

rpop 从list尾部删除元素

rpoplpush 从第一个list尾部移除元素并添加到第二个list头部    rpoplpush mylist1 mylist2

lindex 返回名称为key的list中index位置的元素

llen 返回key对应list的长度

 

Sets类型

set是集合,是string类型的无序集合

  对集合可以取并集、交集、差集,通过这些操作,我们可以实现SNS中的好友推荐和blog的tag功能

Sadd 向名称为key的set中添加元素

Srem 把集合中的元素删除

Spop 随机返回并删除名称为key的set中一个元素

Sdiff 两个集合的差集    sdiff myset1 myset2 哪个在前就以哪个为标准

Sdiffstore   sdiffstore myset3 myset1 myset2 将差集存到myset3中

Sinter 交集

Sinterstore 将交集存到另一个集合中

Sunion 返回所有给定key的并集

Sunionstore 将并集的内容存到一个新的集合中

Smove 从第一个key对应的set中移除member并添加到第二个对应的set中  Smove myset2 myset3 1 将myset2中的1移到myset3中

Scard 查看集合元素个数

Sismember 测试某个元素是否是集合中的元素  Sismember myset 1 判断1是否在myset中的元素

 

Sorted sets 类型 有序集合

Sorted sets 是sets的一个升级版本,在set的基础上增加了一个顺序属性,可以理解为有两列的mysql表。一列存value,一列存顺序。

 zadd 向有序集合添加元素  zadd myset 1 "one"

zrange myset 0 -1 取出集合中的元素

zrange myset 0 -1 with scores 取出元素和顺序号

zrem 删除

zincrby 对顺序指定增加

zrank 返回名称为key的zset中members元素的排名 按下标从小到大排序

zrevrank rev代表反转 按下标从大到小排序

zrevrange 降序排序

zrangebyscore  zrangebyscore myset 2 3 with scores  给一个范围的元素排序

zcount 返回集合中score在给定区间的数量

zcard 返回集合中元素个数

zremrangebyrank 删除集合中排名在给定区间的元素(按索引删除)

zremrangebyscore 按顺序删除