前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >总结(七) redis

总结(七) redis

作者头像
宇宙无敌暴龙战士之心悦大王
发布2022-01-10 11:39:28
2640
发布2022-01-10 11:39:28
举报
文章被收录于专栏:kwai

模块一:基础

redis 是基于内存的KV非关系型数据库。

redis基本数据类型有:String,list,hash,set,zset。

redis的使用场景有:缓存,计数器(String自增自减)。

  • redis启动过程

先去/usr/local/bin打开redis-server

然后启动redis-cli(redis的客户端)就可以了

默认进入0号数据库。

  • redis为什么快

基于内存

数据结构简单

采用单线程

多路复用IO

  • 基本的数据结构

String:

普通的KV字符串,一个k对应一个v。

代码语言:javascript
复制
set me syyyj
get me

结果输出了syyyj。

List:

简单的字符串集合。按插入顺序来排序,可头插(L)可尾插(R)

代码语言:javascript
复制
rpush me syyyj
//输出1
rpush me syj
//输出2
rpush me syjjj
//输出3
rrange me
//输出
//"syyyj"
//"syj"
//"syjjj"

Hash:

映射表操作

代码语言:javascript
复制
hmset set okk me nb we upup
hget okk me
//输出nb
hget okk we
//输出 upup

出现hash冲突的解决方式和hashmap一样,用拉链法解决hash冲突,不过没有红黑树。

set:

String类型的无序集合。

集合是用hash来实现的,所以增删查都是O(1)。

使用sadd的时候,返回1是成功,返回0是已存在。

代码语言:javascript
复制
sadd key value;
//输出1
sadd key value2;
//输出1
sadd key value;
//输出0
smembers key:
//输出
//"value"
//"value2"

Zset:

关于String的有序集合,底层使用跳表来实现

同时不可以重复。

运用每个项的得分来排序,从小到大排序。

集合是用hash来实现的,所以增删查都是O(1)。

使用zadd的时候,返回1是成功,返回0是已存在。

代码语言:javascript
复制
zadd key score member 基本示范。
zadd vv 0 me
zadd vv 1 me2
zadd vv 2 me3
ZRANGE vv 0 1000

模块二:事务

redis的事务是非原子性的,所以也不会回滚,如果要实现回滚,要用命令watch。

  • redis的事务基本命令

multi 创建事务

exec 启动事务

discard 关闭事务

watch < KEY > 监听key

unwach 取消所有监听

  • 如何实现事务?

使用watch命令监听某个key,如果事务中使用这个key,同时监听到这个key发生变化,事务则会发送回滚。如果key没有变化,则继续下去,同时这个watch会没掉。所以watch监听只会用一次。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1m9564neirmdi

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模块一:基础
  • 模块二:事务
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档