redis非关系数据库
1.NOSQL的概念
NOSQL(Not only sql):不仅是sql语句, 它是对所有非关系型数据库的一种统称。 除去关系型数据库之外的都是非关系数据库。
2. NOSQL和RDBMS的区别
RDBMS
- 高度组织化结构化数据。 user---userid username age sex .....
- 结构化查询语言(SQL) sql语句
- 数据和关系都存储在单独的表中。
- 数据操纵语言DML,数据定义语言DDL
- 严格的一致性. 事务
- 基于事务
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 键 - 值对存储。
- 最终一致性,而非ACID【原子,一致,隔离,持久】属性
- 非结构化和不可预知的数据 字符串 对象 队列 集合
- 高性能,高可用性和可伸缩性。 适合搭建集群。 mysql搭建集群。非常复杂。主从模式
NOSQL是替换RDBMS的吗? 不是。
3. 常见的NOSQL数据库类型
Redis就属于非关系数据库。
Mongodb属于非关系数据库。----接近mysql数据库
4. 什么是redis。
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
Redis是一个开源的使用ANSI C语言编写可基于内存亦可基于磁盘,Key-Value数据库。类似于map
5. 为什么使用redis
1.Redis读取的速度是110000次/s,写的速度是81000次/s
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化--磁盘,主从复制(集群)
5.官方不支持window系统,但是又第三方版本。
6.如何安装redis.
准备工作
1.安装redis需要的环境。yum install -y gcc-c++
2.上官网下载redis源码安装包。
redis-5.0.8.tar.gz(根据自己版本需求)
安装步骤
1. 解压redis到/usr/local
2. 进入redis目录并执行编译命令 make
3. 执行安装命令 make install
开启redis服务。
redis-server redis.conf
使用redis客户端连接redis服务器
redis-cli -h redis服务器的ip -p redis服务器的端口号
7. redis配置文件简单看看
# 表示启动redis服务器时 后台启动。
daemonize yes
# 默认的端口号。
port 6379
# 默认运行绑定的端口号~~~~~~~~~~~~~~~~~~~~~~~HTTP协议~~~~~~~~~~~~~~~~~
# bind 127.0.0.1
# 0.0.0.0 表示广播模式 意思是所有人都可以连接。127.0.0.1
bind 0.0.0.0
8. redis图形化界面的客户端
9. redis的常用命令。
9.1 对key操作的命令
keys *: 查询所有的key;
del key....:删除指定的key
expire key seconds: 为指定的key设置过期时间单位为秒
ttl key: 查询指定key的存活时间
9.2 对数据库的操作命令
flushdb: 清空当前数据库中的数据。
select index: 选择数据库
flushall: 清空所有数据库中的数据。
10. redis支持的数据类型
http://redisdoc.com/
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合)。
11. String字符串类型–value值为字符串类型
可以存放任意类型的字符串。java对象—>json字符串—>string
1.set key value: 把字符串的value存放到对应的key上。
2.get key: 根据指定的key获取对应字符串的value
3.mset key value key value key value....: 一次存放多个字符串的value到相应的key上
4.mget key key...: 根据指定的多个key获取对应的字符串的value
5.setnx key value: 把指定的value存放到对应的key上,如果对应的key已经存在,则不存储。
如果不存在则存储。 返回0或者1
6.incr key: 为指定的key的value值进行递增。应用场景:点赞 收餐 转发等
7.decr key: 递减
12. Hash(哈希) --value值为hash类型。
1.hset key field value: 存放一个指定key的field-value的数据库
2.hget key field:获取指定key的field字段对应的value值。
3.hkeys key: 获取指定key的所有field字段名
4.hvals key: 获取指定key的所有value值。
5.hgetall key: 获取指定key的所有的field和value值。
6.HDEL key field: 删除指定key的field字段。
13.redis的列表(list) 线性有序 顺序 可重复 元素可存文字/二进制数据 类似编程语言中的list
1.LPUSH(将元素推入到列表左端)
命令LPUSH list item [item item ...]
2.RPUSH(将元素推入到列表右端)
命令RPUSH list item [item item ...]
3.LPUSHX、RPUSHX(只对已存在的列表执行推入操作)
命令LPUSHX list item和RPUSHX list item
4.LPOP(弹出列表最左端的元素)和RPOP(弹出列表最右端的元素)
命令LPOP list和RPOP list
5.RPOPLPUSH(将右端弹出的元素推入到左端)
命令RPOPLPUSH source target
6.LLEN(获取列表的长度)
命令LLEN list
7.LINDEX(获取指定索引上的元素)
命令LINDEX list index
端的元素)和RPOP(弹出列表最右端的元素)
命令LPOP list和RPOP list
5.RPOPLPUSH(将右端弹出的元素推入到左端)
命令RPOPLPUSH source target
6.LLEN(获取列表的长度)
命令LLEN list
7.LINDEX(获取指定索引上的元素)
命令LINDEX list index