NoSQL(not only SQL):泛指非关系型数据库,是一类新出现的数据库,不支持SQL语法,其存储的数据都是kv形式,存储结构与关系型数据库中的关系表完全不同
NoSQL产品种类:主要有Redis、MongoDB、HBASE Hadoop、Cassandra Hadoop
nosql没有通用的语言,每种产品都有自己的api和语法,以及擅长的业务场景
NoSQL与SQL区别比较
Redis:开源、使用ANSI C语言编写、支持网络集群搭建、可基于内存和可持久化的日志型、key-value数据库,并支持多种语言的API,通过多种键值数据类型来适应不同场景下的存储需求,借助一些高级接口可以胜任缓存、系统队列的不同角色
Redis与其它kv产品特点
Redis优势
Redis应用场景
ubuntu安装与配置:ubuntu安装和启动redis命令步骤及其配置文件redis.conf
windows安装redis:windows下载redis、windows安装redis、windows启动redis
部分操作展示如下,其余请访问第三部分安装与配置
redis是k-v的数据结构,每条数据都是一个键值对
string类型:是redis中最为基础的数据存储类型,存储的是二进制,这意味着该类型可存储任何格式的数据,如jpg、json等,string类型的value最多可容纳512M的数据长度
命令如下
保存/修改:若键值不存在则添加,若已存在则修改
设置键值:set key value
设置键值及过期时间:setex key seconds value // 以秒为单位
设置多个键值:mset key1 value1 key2 value2 ……
追加值:append key value
获取:根据键获取值,若不存在此键则返回nil
获取键值:get key
根据多个键获取多个值:mget key1 key2 ……
具体操作如下
可能报如下错误
(error) MISCONF Redis is configured to save RDB snapshots,but it is currently not able
to persist on disk. Commands that may modify the data set are disabled,because this
instance is configured to report errors during writes if RDB snapshotting fails (stop
writes-on-bgsave-error option). Please check the Redis Logs for details about the RDB
error.
解释:(错误)MISCONF Redis 已配置为保存 RDB 快照,但目前无法持久化在磁盘上。可能修改数据集的命令将被禁用,因为此实例配置为在 RDB 快照失败时在写入期间报告错误(在 bgsave 错误时停止写入选项)。请查看 Redis 日志,了解有关 RDB 错误的详细信息。
解决方法:
输入命令修改值为no:config set stop-writes-on-bgsave-error no
获取与修改
查找键:keys pattern # pattern支持正则表达式
判断键是否存在:exists key # 存在返回1,否则返回0
查看键所对应的value值的类型:type key # 结果为redis所支持的五种类型中一种
删除键及所对应值:del key1 key2 ……
设置过期时间:expire key seconds # 以秒为单位,若为指定时间则一直存在,直至用del删除
查看有效时间:ttl key # 秒为单位
操作如下
hash用于存储对象,对象的结构为属性、值 ,值的类型为string
增加、修改:有则修改、无则添加
设置单个属性:hset key field value # k-f-v:键-属性-值
设置多个属性:hmset key field1 value1 field2 value2 ……
获取
获取指定键所有属性:hkeys key
获取一个属性的值:hget key field
获取多个属性的值:hmget key field1 field2 ……
获取所有属性的值:hvals key
删除
删除整个hash键和值:del key
删除属性:hdel key field1 field2 …… # 属性对应值会一起删除
列表元素类型为string,按插入顺序排序
增加
左侧插入数据:lpush key value1 value2 ……
右侧插入数据:rpush key value1 value2 ……
在指定元素前或后插入数据:insert key before或after 指定元素 新元素
获取
返回列表中指定范围内的元素:lrange key start stop
# start、stop为下标索引,索引从左开始,第一个为0,索引可为负,表示从尾部开始计数,-1表示最后一个元素
修改
设置指定索引位置元素值:lset key index value
删除
删除指定元素:lrem key count value # 键列表中前count次出现的值为value的元素删除
count>0:从头至尾移除
count<0:从尾至头移除
count=0:移除所有
无序集合,元素为string类型,元素具有唯一性,不能重复,不能修改
添加元素:sadd key member1 member2 ……
获取所有元素:smembers key
删除指定元素:srem key 指定元素
操作如下
有序集合(sorted set),元素为string类型,具有唯一性,不能重复,不能修改,每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
增加:zadd key score1 member1 score2 member2 ……
获取:zrange key start stop
# 返回指定范围内的元素,start、stop为下标索引,索引从左开始,第一个元素为0
# 索引可为负,表示从尾部开始计数,如-1表示最后一个元素
返回score值在min和max之间的成员:zrangebyscore key min max
返回成员member的score值:zscore key member
删除
删除指定元素:zrem key member1 member2
删除权重在指定范围的元素:zremrangebyscore key min max
操作如下
学习导航:http://xqnav.top/