redis入门
redis入门
Nosql与sql
Nosql是什么
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
sql是什么
sql指的是关系型数据库。关系型数据库要满足4大特征,也就是我们常提的ACID原则(A原子性、C一致性、I独立性、D持久性)
sql与nosql
- NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
- sql支持关系复杂的数据查询,nosql反之
- sql支持事务性,nosql不支持
典型的nosql数据库
Mongodb、redis、Hbase hadoop
redis
redis介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
redis是c语言编写的,支持数据持久化,是key-value类型数据库。
应用在缓存,队列系统中
redis支持数据备份,也就是master-slave模式
redis优势
- 性能高,读取速度10万次每秒(还可以通过集群再度提升)
- 写入速度8万次每秒
- 所有操作支持原子性
应用情况
- 用作缓存数据库,数据放在内存中
- 替代某些场景下的mysql,如社交类app
- 大型系统中,可以存储session信息,购物车订单
redis安装
存在通过yum和源码安装两种情况,这里直接写执行步骤,不做赘述。
# 1.yum安装
# 查看redis版本
yum list redis
# 安装redis
yum install redis
# 启动redis
systemctl start redis
# 2. 源码安装
# 下载redis源码
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
# 解压缩
tar -zxf redis-4.0.10.tar.gz
# 编译安装
make && make install
# 安装到指定目录,默认在redis目录下的src底下
# 下面自己配置环境变量
echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/vimx/bin:/root/binopt/redis-4.0.10/src" >> /etc/profile
# 运行以完成安装
[root@localhost src]# redis-server --version
Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=92305af7dfef4310
redis可执行文件
# redis的客户端
./redis-cli
# redis的服务端
./redis-server
# 用于集群管理
./redis-sentinel
# redis性能测试工具
./redis-benchmark
# 用于修复出问题的dump.rdb文件
./redis-check-dump
# 用于修复出问题的AOF文件
./redis-check-aof
redis基本配置文件
# 如果使用源码安装的话,那么配置文件目录在src下的redis.conf。
# redis默认不会调用配置文件启动。需要指定配置文件
redis-server redis.conf
# 重要配置
bind 127.0.0.1 # 配置可连接的ip
port 6379 # 配置redis启动端口
daemonize yes # 守护进程方式运行(后台运行)
dbfilename dump.rdb # 数据文件指定
dir /var/lib/redis/ # 数据文件存放路径
logfile /var/log/redis/redis-server.log # 日志文件
slaveof # 主从复制
requirepass password # 密码
redis支持的数据类型
redis是一种高级的key:values储存系统。支持下面5种数据类型:
- 字符串(strings)
- 散列(hashes)
- 列表(lists)
- 集合(sets)
- 有序集合(sorted sets)
基本命令
# 进入redis服务端
redis-cli
# 接下来可以执行redis命令
ping # 回复pong说明通了
keys * # 查看所有的键
set key value # 设置一个键值
expire key # 给key加上过期时间
get key # 获取一个键的值
type key # 显示value的类型
ttl key # 查看key的过期时间。(-1表示永不过期,-2表示已过期)
persist key # 取消key的过期时间(对过期的key没用)
exists key # 监测key是否存在
del key # 删除key
dbsize # 计算key的数量
flushall # 删除所有库的所有键
flushdb # 删除当前数据库的所有键
各数据类型常用命令
# string
set key # 设置key
get key # 获取key
append key value # 追加string
mset key1 value1 key2 value2 # 设置多个键值对
mget key1 key2 key3 # 获取多个键值对
del key # 删除key
incr key # 递增+1
decr key # 递减-1
# list
lpush 列表名 value1 value2 # 从左一个一个插入
rpush 列表名 value1 value2 # 从右一个一个插入
lrange 列表名 第一个切片值 第二个切片值 # 从第一个到第二个之间的列表值(如 lrange paidui 0 -1 拿列表所有的值)
ltrim 列表名 截取开头 截取结尾 # 将列表切片覆盖原列表,注意取前也取后
lpop 列表名 # 从左删
rpop 列表名 # 从右删
# set
sadd/srem key value1 value2 # 添加/删除 元素
sismember key value # 判断是否为set的一个元素
smembers key # 返回集合所有的成员
sdiff key1 key2 # 返回一个集合和其他集合的差异(差集key1-key2)
sinter key1 key2 # 返回几个集合的交集(交集)
sunion key1 key2 # 返回几个集合的并集(并集)
# 哈希(dict)
hset key field value # 设置散列值(一个)
hget key field # 获取散列值
hmset key field1 value1 field2 value2 # 设置多对散列值
hmget key field1 field2 # 获取多对散列值
hsetnx key field value # 如果散列已经存在,则不设置(防止覆盖key)
hkeys key # 返回所有keys
hvals key # 返回所有values
hlen key # 返回散列包含域(field)的数量
hdel key field # 删除散列指定的域(field)
hexists key field # 判断是否存在