# 基础介绍

使用C语言开发的的一个开源的高性能键值对数据库 中文网 (opens new window)
Windows版下载 (opens new window)
Linux版下载 (opens new window)

默认端口号:6379

# 核心文件

  • redis-server.exe:服务器启动命令
  • redis-cli.exe:命令行客户端
  • redis.windows.conf:redis核心配置文件
  • redis-benchmark.exe:性能测试工具
  • redis-check-aof.exe:AOF文件检查工具
  • redis-check-dump.exe:RDB文件检查工具

# 基本特征

  • 数据间没有必然的关联关系
  • 内部采用单线程机制进行工作
  • 高性能,高并发
  • 持久化支持,可进行数据灾难恢复

# 应用场景

  • 作为缓存使用
    • 原始业务功能设计,例如:秒杀、促销活动、排队购票等
    • 高频次数据访问,例如:突发时政、关注焦点、在线人数等
  • 系统功能优化或升级
    • 单服务器升级集群
    • Session、Token管理

# 基本操作

keys * //获取所有的键
type key //获取键对应value的类型
del key //删除指定的key value

# 数据类型

数据类型指的是存储的数据类型,也就是value部分的类型,key部分永远是字符串

# string 字符串

set key value //存储
get key //获取
del key //删除

mset key1 value1 key2 value2 ……  //存储多个
mget key1 key2 …… //获取多个

setex key seconds value //设置秒
setex key milliseconds value //设置毫秒

# hash 哈希

value为Map类型

hset key field value //存储 hset myhash username lisi
hget key field  //获取一个  hget myhash username
hgetall key //获取全部
hdel key field  //删除 

# list 列表

  • 双向链表linkedlist,支持重复元素
  • 可以添加一个元素到列表的头部(左边)或者尾部(右边)
//存储
lpush key value //将元素加入到列表左边
rpush key value //将元素加入到列表右边

//获取
lrange key start end //范围获取
lrange key 0 -1 //获取所有

//删除
lpop key //删除列表最左边的元素,并将该元素返回
rpop key //删除列表最右边的元素,并将该元素返回

//测试
lpush mylist a
lpush mylist b
rpush mylist c
lrange mylist 0 -1
//输出 bac

# set 集合

不允许重复的元素,无序的

sadd key value  //存储
sadd key value1 value2 …… //存储多个
smembers key //获取所有元素
srem key value //删除

# sortedset 有序集合

  • 不允许重复的元素,且元素有序
  • 每个元素都会关联一个double类型的分数
zadd key score value //存储
zrange key start end //获取
zrange key 0 -1 withscores //获取全部并带着分数
zrem key value  //删除

# 数据持久化

# RDB

默认方式,不需要配置,在一定的时间间隔中,检测key的变化,然后持久化数据

  • 在conf配置文件中:
    • save 900 1 => 900秒后至少有1个key发省改变就持久化一次
    • save 300 10 => 300秒后至少有10key发省改变就持久化一次
    • save 60 10000 => 50秒后至少有10000个key发省改变就持久化一次
  • 如果修改了conf配置文件,不能直接启动redis-server.exe,需按如下方式启动
    D:\编程\Redis\Redis-x64-3.0.504\redis-server.exe redis.windows.conf
    

# AOF

日志记录的方式,可以记录每一条命令的操作。每次操作后持久化数据

  • 在conf配置文件中:
    • appendonly no(关闭) => appendonly yes(开启)
    • appendfsync always => 每次操作都持久化
    • appendfsync everysec => 每隔一秒持久化(默认值)
    • appendfsync no => 不持久化
  • 如果修改了conf配置文件,同样需按如上方式启动