Redis数据库
Redis简介
- 完全开源免费,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,
- 支持存储多种数据结构
- 高性能,所有数据存储在内存中,
- 支持的语言多样化
- 主从复制
打开redis客户端:
redis-cli
打开redis服务端:
redis-server
重启redis服务:
sudo /etc/init.d/redis-server restart
Redis配置
Redis根目录有一个redis.conf文件,可以通过CONFIG命令获取和设置所有Redis配置
基本语法:
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
redis 127.0.0.1:6379> CONFIG GET loglevel
config get *
编辑配置:
直接编辑conf文件,或者通过config set
命令更新配置
语法:
config set config_setting_name new_config_value
Redis数据类型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- 位图
- 基数统计
字符串
String是一组字节(最大为512M)
例子:
使用set命令在name键中国存储字符串redis.com.cn
,然后使用GET命令查询name。
set name "redis.com.cn"
get name
哈希:
哈希是键值对的集合,在Redish中,哈希事字符窜字段和字符串值之间的映射
列子:
存储一个用户的对象,其中包含用户的基本信息
HMSET user:1 username ajeet password javapoint alexa 2000
HMSET和HGETALL
是命令,user:1
是键
列表:
Redis定义为字符串列表,按插入顺序排序,可以将元素添加到Reids列表的头部或者尾部
lpush javapoint java
lpush javapoint sql
lpush javapoint mongodb
lpush javapoint cassajmcndre
lrange javapoint 0 10
集合
无序字符串的集合
sadd tutoriallist redis
有序集合:
zadd tutoralist s
位图
类似于map
结构存放0或1
,作为值,可以用来统计是否浏览过某个东西
setbit命令:
Redis setbit 命令用于设置或者清除一个bot位
setbit key offset value
Redis命令
redis客户端命令:
redis-cli
远程服务器上执行命令:
redis-cli -h host -p port -a password
实例:
redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
Redis键:
句法:
COMMAND KEY_NAME
例子:
SET javapoint redis
DEL javapointr
Redis 字符串:
Redis用于管理Redis的字符串
COMMAND KEY_NAME
例子:
SET javapoint redis
GET javapoint
Redis 哈希
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象,每个哈希键中可以存储多达 40 亿个字段值对。
例子:
HMSET rediscomcn name "redis" url "http://www.redis.com.cn" rank 1 vistitor 240000000
HGETALL rediscomcn
Redis 列表
LPUSH javapoint sql
LPUSH javapoint mysql
LPUSH javapoint cassandra
LRANGE javapoint 0 10
Redis 集合(Sets):
例子:SADD
命令向名为rediscomcn
的集合插入的三个元素
SADD rediscomcn db2
SADD rediscomcn mongodb
SADD rediscomcn db2
SADD rediscomcn cassandra
Redis有序集合:
ZADD redis111 1 redis
ZADD redis111 2 cassandra
ZADD redis111 3 mysql
Redis HyperLogLog
redishyloglog
是用来做基数统计的算法
基数:
不重复的元素
redis地理信息:
redis主要用于存储地合理位置信息,并对存储的信息进行操作。
redis GEO操作方法:
- Geoadd:添加地理位置的坐标
- Geodes:获取地理位置的坐标
- geodlist: 计算两个位置之间的距离
- georadiusbymember: 根据存储在位置集合里面的某个地点获取范围内地理位置集合
- geohash: 返回一个或多个位置对象的geohash值
Redis Stream
让任何客户端访问任何时刻的数据并且记住每一个客户端访问位置,还能保证消息不丢失
Redis脚本:
Redis脚本使用Lua解释器执行脚本
句法:
redis 127.0.0.1:6379>EVAL script numkeys key arg
EVAL "return" 2 key1 key2 first second
redis数据库原目录:
/usr/local/var/db/redis
dump.rdb
Resp协议:
redis客户端
和服务端之间的通信协议就是resp
- 简单的实现
- 快速地被计算机解析
- 简单得可以能被人工解析
客户端会将信息以二进制的形式安全的发送给服务端,服务端会用不同的回复类型回复命令,客户端可以从服务器回复的第一个字节校验回复类型
- 单行回复(单行字符串),恢复的第一个字节将是“+”
- 错误消息(单行字符串回复的灵位展示形式),恢复的第一个字节将是“-”
- 整形回复(正整形数字回复),回复的第一个字节将是”:”
- 批量回复(多行字符串回复),回复的第一个字节将是”$”
- 多个批量回复(数组回复),回复的第一个字节将是”*”
客户端与服务端之间的每个命令或者数据都是以\r\n结尾