Redis入门基本操作

本文介绍了Redis,它是开源免费的高性能key - value数据库,支持持久化和多种数据结构存储。还给出了Windows版下载链接,介绍了Redis keys命令、基础数据结构(如String、list、hash等)的操作,以及通用操作(删除、遍历),并对比了Redis与关系型数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis简介

什么是Redis?
Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库;

特点

  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
  • 不仅支持key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
  • 支持数据的备份,即master-slave模式的数据备份;

下载安装

Window版本3.2
链接:https://pan.baidu.com/s/1G8qQvf5zwy3SjoZDCaPCzw
提取码:dfuj
Window版本2.8
链接:https://pan.baidu.com/s/1EPB5PBhWebnC84Ml1YJ7uA
提取码:rcs7

避免中文乱码
redis-cli --raw

Redis keys 命令

命令功能
del key在key存在时删除key,删除成功返回1,否则返回0
dump key序列化给定key,并返回被序列化的值;
exists key检查给定key是否存在,存在返回1,否则返回0
expire key seconds为给定key设置过期时间以秒计
expireat key timestamp同上,不过时间参数为unix时间戳
pexpire key milliseconds同上,以毫秒计
keys pattern查找所有给定模式的key
move key db将当前数据库的key移动到给定数据库db当中
persist key移除key的过期时间
pttl key以毫秒为单位返回key的剩余的过期时间
ttl key同上,以秒为单位
randomkey从当前数据中随机返回一个key
rename key newkey仅当newley不存在时。将key改名为newkey
type key返回key所存储的值的类型

基础数据结构

String
不同于Java中的String,而是类似与StringBuilder;

  • 数据结构:SDS(simple dynamic string) 是可变的,在容量满了之后会自动扩容,在容量小于1m时,每次翻倍,超过1m 每次只增加1m,最多512m;

常用操作

  • set get
set key value   存储value为字符串类型的数据;
get key       根据key获取字符串类型的数据;
  • mset mget
mset  一次存储多个键值对;
mget 根据多个key 一次获取多个值;
  • expire tll
expire 设置超时时间,超时之后自动失效;
tll 查看某个key剩余的超时时间;
  • set [ex] [nx]
nx的含义是,不存在key时,set操作才会成功,如果有了key,set操作就会返回nil,而不会覆盖原有的key;
可以用于实现redis的分布式锁;
  • getrange key start end 返回给定key中字符串的子字符;

  • getset key value:当key存在时更新key的值,并返回旧值,不存在时创建key-value,返回nil;

  • incr key针对value是数字时,每次自增1

  • incrby key increment针对value是数字时,每次自增increment

  • decr key减1;

  • decr key increment :减increment;

  • append key value:如果key存在并且是一个字符串,将指定的value追加到该key原来值的末尾;

list
数据结构:
- ziplist:当list中数据量很少的时候,数据连续存储,访问效率较高;
- quicklist:当list中数据量很多的时候,是一个双向的链表;

  • rpush:往右侧添加元素;

  • lpop:从左侧弹出元素;

  • lpush :往左侧添加元素;

  • rpop :从右侧弹出元素;

  • lpush+rpop 行为上是一个队列(先入先出FIFO)

  • rpush+lpop 同上

  • lpush+lpop 行为上是一个栈 (先入后出)

  • rpush+rpop 同上

  • llen 查看集合的长度;

  • ltrim ltrim key start stop:取定长子列表;

  • lindex:按下标获取元素,效率较低,时间复杂度为O(n) 格式lindex key index

  • lrange 格式lrange key start stop -1表示到列表的最后;

hash
数据结构:hash表(数组+链表)

  • 渐进式扩容,扩容过程中会查询新旧两个hash表,不会影响客户的使用,等扩容结束会用旧的替换新的。
  • 对比字符串:读取某一字段,存储消耗;
命令描述
hdel key field1 [field2]删除一个或多个哈希表字段
hexists key field查看哈希表key中,指定字段是否存在
hget key field获取指定字段的值
hgetall key获取指定key的所有字段和值
hincrby key为哈希表key中的指定字段的整数值加上增量inrement
hincrbyefloat为哈希表key中的指定字段的浮点数值加上增量inrement
hkeys key获取所有哈希表中的字段
hlen key获取哈希表中字段的数量
hmget key field1 [field2]获取所有给定字段的值
hmset key field1 value1 [field2 value2]同时将多个field-value对设置到哈希key中
hset key field value将哈希表key中的字段field的值设为value,而且不用判断字段先前是否存在
hsetnx key field value只有字段field不存在时设置哈希表字段的值
hvals key获取哈希表中所有的值
hscan key cursos迭代哈希表中的键值对

set
类似与java中的hashset,hash表(数组+链表)

  • sadd:sadd key 元素 添加元素;
  • smembers:smembers key 查询所有元素;
  • sismenber:sismenber key 待测试元素 判断某一个value是不是集合中的成员,包含返回1,不包含返回0;
  • scard: 获取set集合的大小;
  • spop:在集合中随机找到一个元素,返回并删除;

zset(保证唯一并有序)

  • zadd zadd key 得分 元素 注意默认得分低的排在前面;
  • zrange zrange key start stop 查询集合
  • zrevrange arevrange key start stop
  • zcard 查看大小;
  • zscore zscore key 元素查看某个元素的得分
  • zrank 查看排名
  • zrangebyscore -inf 给一个分数范围;
  • zrem 删除集合中的元素;
  • 数据结构-跳跃表

后四种容器

  • create if not exists 第一次操作时才创建这些集合;
  • drop if no elements 如果集合空了,会把集合对应的内存释放掉;
  • expire 过期时间

通用操作

删除
del 根据key 删除一个元素;
flushall 清空整个redis,删除所有的key;
遍历
keys 匹配关键字 根据匹配关键字,查找所有符合的key,keys * 千万不要在线上使用;
scan limit 代表每次只查询一部分符合匹配关键字的结果,不会像keys那样查询所有;

redis相比关系型数据库

  • 在关系型数据库中,当不同记录需要不同属性时,表的字段数量会越来越多以至于难以维护,而且当使用ORM将关系数据库中的对象实体映射成程序中的实体时,修改表的结构往往意味着要中断服务,一般需要创建额外的表;
  • 而redis并不要求每个键都一句此结构存储,可以完全自由地为任何键增减字段而不影响其他键;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值