Redis数据库


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

image-20211101141346522

config get *

image-20211101141514906

编辑配置:

直接编辑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

image-20211101142242984

哈希:

哈希是键值对的集合,在Redish中,哈希事字符窜字段和字符串值之间的映射

列子:

存储一个用户的对象,其中包含用户的基本信息

HMSET user:1 username ajeet password javapoint alexa 2000

image-20211101142710487

HMSET和HGETALL是命令,user:1是键

列表:

Redis定义为字符串列表,按插入顺序排序,可以将元素添加到Reids列表的头部或者尾部

lpush javapoint java
lpush javapoint sql
lpush javapoint mongodb
lpush javapoint cassajmcndre
lrange javapoint 0 10

image-20211101143354864

集合

无序字符串的集合

sadd tutoriallist redis

image-20211101143808968

image-20211101143821019

有序集合:

zadd tutoralist s

image-20211101144248407

位图

类似于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

image-20211101150831259

redis keys命令

Redis 字符串:

Redis用于管理Redis的字符串

COMMAND KEY_NAME

例子:

SET javapoint redis
GET javapoint

image-20211101151149758

字符串命令

Redis 哈希

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象,每个哈希键中可以存储多达 40 亿个字段值对。

例子:

HMSET rediscomcn name "redis" url "http://www.redis.com.cn" rank 1 vistitor 240000000
HGETALL rediscomcn

image-20211101151622265

redis 哈希命令

Redis 列表

LPUSH javapoint sql
LPUSH javapoint mysql
LPUSH javapoint cassandra
LRANGE javapoint 0 10

image-20211101151935817

redis 列表命令

Redis 集合(Sets):

例子:
SADD命令向名为rediscomcn的集合插入的三个元素

SADD rediscomcn db2
SADD rediscomcn mongodb
SADD rediscomcn db2
SADD rediscomcn cassandra

image-20211101152707810

redis集合命令

Redis有序集合:

ZADD redis111 1 redis
ZADD redis111 2 cassandra
ZADD redis111 3 mysql

image-20211101153209105

redis有序集合命令

Redis HyperLogLog

redishyloglog是用来做基数统计的算法

基数:

不重复的元素

image-20211101153754004

redis地理信息:

redis主要用于存储地合理位置信息,并对存储的信息进行操作。

redis GEO操作方法:

  • Geoadd:添加地理位置的坐标
  • Geodes:获取地理位置的坐标
  • geodlist: 计算两个位置之间的距离
  • georadiusbymember: 根据存储在位置集合里面的某个地点获取范围内地理位置集合
  • geohash: 返回一个或多个位置对象的geohash值

地理信息操作

Redis Stream

让任何客户端访问任何时刻的数据并且记住每一个客户端访问位置,还能保证消息不丢失

image-20211101160444415

RedisStream讲解

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结尾


文章作者: 尘落
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 尘落 !
评论
  目录