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 按顺序删除