Redis
(本测试环境为:Linux)
(测试服务器为虚拟机Vm)
1.简介
Redis:开源的内存中数据结构存储系统。
应用:数据库、缓存和消息中间件。
支持数据结构:字符串(strings) , 散列(hashes) , 列表(lists) ,
集合(sets) , 有序集合(sorted sets)
内置实现:磁盘持久化(persistence),
并通过 Redis 哨兵(Sentinel) 和自动分区(Cluster)
提供高可用性(high availability)
支持语言:支持市面上大部分语言(C/Java/Python/…)
支持数据类型:string 、 hash 、 list 、 set 、 sorted set
2.安装
下载:http://redis.io/
链接:https://pan.baidu.com/s/1gpbztr03yDKNVF5ss2U_Eg
提取码:fwn7
上传至服务器
tar zxvf redis-5.0.3.tar.gz 解压
yum -y install gcc-c++ autoconf automake 安装依赖
预编译
cd redis-5.0.3/ 切换到解压目录
make 实现预编译
安装
mkdir -p /usr/local/redis 创建安装目录
不使用:make install(make install默认安装到/usr/local/bin目录下)
使用:如果需要指定安装路径,需要添加PREFIX参数(make PREFIX=/usr/local/redis/ install)
查看
安装成功后 输入 ll (查看目录文件) 存在下列文件安装成功
Redis-cli :客户端
Redis-server :服务器端
启动
安装的默认目标路径:/usr/local/redis/bin
./redis-server 启动
默认为前台启动,修改为后台启动
复制redis.conf至安装路径下
cp redis.conf /usr/local/redis/bin/
修改安装路径下的redis.conf,将 daemonize 修改为yes
daemonize yes
启动时,指定配置文件路径即可
./redis-server ./redis.conf
通过windows 客户端访问
下载:
链接:https://pan.baidu.com/s/1IwGVykPU8QVzcaxmJl_FDA
提取码:np9o
首次登录会失败
Name:root
Host:主机ip
Port:6379
修改配置文件redis.conf
-
注释掉 bind 127.0.0.1 可以使所有的ip访问redis,若是想指定多个ip访问,但并不是全部的ip访问,可以bind设置
#bind 127.0.0.1
-
关闭保护模式,修改为no
protected-mode no
-
添加访问认证
requriepass root
-
查看进程
ps -ef | grep redis
-
修改后kill -9 XXXX杀死redis进程,重启redis
kill -9 进程编号
-
再次建立连接 -> 成功
-
可以修改逻辑数据库数量
databases xx
3.关系型数据库与非关系型数据库
3.1关系型数据库
采用关系模型来组织数据的数据库,关系模型就是二维表格模型。
优点
- 容易理解
- 使用方便,通用的sql语言
- 易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率
缺点
- 磁盘I/O是并发的瓶颈
- 海量数据查询效率低
- 横向扩展困难,无法简单的通过添加硬件和服务节点来扩展性能和负载能力,当需要对数据库进行升级和扩展时,需要停机维护和数据迁移
- 多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。因为要保证acid,必须按照三范式设计。
数据库
Orcale,Sql Server,MySql,DB2
3.2非关系型数据库
键值对存储,结构不固定。
优点
-
根据需要添加字段,不需要多表联查。仅需id取出对应的value
-
适用于SNS(社会化网络服务软件。比如facebook,微博)
-
严格上讲不是一种数据库,而是一种数据结构化存储方法的集合
缺点
-
只适合存储一些较为简单的数据
-
不合适复杂查询的数据
-
不合适持久存储海量数据
数据库
K-V:Redis,Memcache
文档:MongoDB
搜索:Elasticsearch,Solr
可扩展性分布式:HBase
4.Redis-cli操作Redis
4.1 Redis-cli连接Redis
-h :用于指定ip
-p :用于指定端口
-a :用于指定认证密码
./redis-cli -p 6379 -a root
PING命令返回PONG
PING
指定database
select db
4.2 Redis-cli操作Redis
操作String
set :添加一条String类型数据
get :获取一条String类型数据
mset :添加多条String类型数据
mget :获取多条String类型数据
操作hash
hset :添加一条hash类型数据
hget :获取一条hash类型数据
hmset :添加多条hash类型数据
hmget :获取多条hash类型数据
hgetAll :获取指定所有hash类型数据
hdel :删除指定hash类型数据(一条或多条)
操作list
lpush :左添加(头)list类型数据
rpush :右添加(尾)类型数据
lrange : 获取list类型数据start起始下标 end结束下标 包含关系
llen :获取条数
lrem :删除列表中几个指定list类型数据
操作set
sadd :添加set类型数据
smembers :获取set类型数据
scard :获取条数
srem :删除数据
操作sorted set
sorted set是通过分数值来进行排序的,分数值越大,越靠后。
zadd :添加sorted set类型数据
zrange :获取sorted set类型数据
zcard :获取条数
zrem :删除数据
zadd需要将Float或者Double类型分数值参数,放置在值参数之前
Redis中以层级关系、目录形式存储数据
mset user:01 待存储层级内容(data) 设置层级关系存储
mget user:01 查看层级存储内容
设置key的失效时间
EXPlRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 秒。
PEXPIRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 毫秒。
EXPIREAT <key> < timestamp> :用于将键 key 的过期时间设置为 timestamp 所指定的秒数时间
戳。
PEXPIREAT <key> < timestamp > :用于将键 key 的过期时间设置为 timestamp 所指定的毫秒数时
间戳。
TTL :获取的值为-1说明此 key 没有设置有效期,当值为-2时证明过了有效期。
第一个参数: key
第二个参数: value
第三个参数: NX 是不存在时才set, XX 是存在时才set
第四个参数: EX 是秒, PX 是毫秒
删除
del :用于删除数据(通用,适用于所有数据类型)
hdel :用于删除hash类型数据
tips:命令为java中方法名,参数:去除括号,引号,将逗号变空格即可
zadd需要将Float或者Double类型参数,放置在值参数之前