Redis基础用法(一)

Redis是一个开源的使用C语言编写的key-value的单线程的存储系统,是跨平台的非关系型数据库。
特征:速度快,多种数据结构,持久化,功能丰富,高可用,多语言支持;
02.Redis基本数据类型内部编码
基础数据结构
字符串String有2种编码
哈希Hash2种编码
列表List2种编码
集合Set2种编码
有序集合Zset2种编码
在这里插入图片描述
redis键
keys *:查看当前库所有的key
exists key:判断某个key是否存在
type key:查看你的key是什么类型
del key:删除指定的key数据
unlink key:根据value删除非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在
后续异步中操作。
expire key 10:为指定的key设置有效期10秒
ttl key:查看指定的key还有多少秒过期,-1:表示永不过期,-2:表示已过期
select dbindex:切换数据库【0-15】,默认为0
dbsize:查看当前数据库key的数量
flushdb:清空当前库
flushall:通杀全部库

redis字符串
String是Redis最基本的类型,一个key对应一个value。
String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M
常用命令
set:添加键值对
NX:当数据库中key不存在时,可以将key-value添加到数据库
XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
EX:key的超时秒数
PX:key的超时毫秒数,与EX互斥
value中若包含空格、特殊字符,需用双引号包裹
get:获取值
set name hello
get name
append:追加值
append name world
strlen:获取值的长度
strlen name
setnx:key不存在时,设置key的值
setnx test test #test不存在,返回1,表示设置成功

setnx test test #再次通过setnx设置test,由于已经存在了,所以设 置失败,返回0

incr:原子递增1
#将key中存储的值增1,只能对数字值操作,如果key不存在,则会新建一个,值为1

127.0.0.1:6379> flushdb #清空db,方便测试 
OK
127.0.0.1:6379> set age 30 #age值为30 
OK
127.0.0.1:6379> incr age #age增加1,返回31 (integer) 31 
127.0.0.1:6379> get age #获取age的值 "31" 
127.0.0.1:6379> incr salary #salary不存在,自动创建一个,值为1 (integer) 1 
127.0.0.1:6379> get salary #获取salary的值 "1"

decr:原子递减1

127.0.0.1:6379> flushdb #清空db,方便测试 
OK
127.0.0.1:6379> set age 30 #age值为30 
OK
127.0.0.1:6379> decr age #age递减1,返回29 (integer) 29 
127.0.0.1:6379> get age #获取age的值 "29" 
127.0.0.1:6379> decr salary #salary不存在,自动创建一个,值为-1 (integer) -1 
127.0.0.1:6379> get salary #获取salary "-1"

incrby/decrby: 递增或者递减指定的数字
将key中存储的数字值递增指定的步长,若key不存在,则相当于在原值为0的值上递增指定的步长。

127.0.0.1:6379> set salary 10000 #设置salary为10000 
OK
127.0.0.1:6379> incrby salary 5000 #salary添加5000,返回15000 (integer) 15000 
127.0.0.1:6379> get salary #获取salary "15000"
127.0.0.1:6379> decrby salary 800 #salary减去800,返回14200 (integer) 14200
127.0.0.1:6379> get salary #获取salary "14200

mset:同时设置多个key-value

127.0.0.1:6379> mset name ready age 30 
OK
127.0.0.1:6379> get name "ready" 
127.0.0.1:6379> get age "30"

mget:获取多个key对应的值

127.0.0.1:6379> mset name ready age 30 #同时设置name和age 
OK
127.0.0.1:6379> mget name age #同时读取name和age的值 
1) "ready" 
2) "30"

msetnx:当多个key都不存在时,则设置成功
原子性的,要么都成功,或者都失败。

127.0.0.1:6379> flushdb #清空db,方便测试 
OK
127.0.0.1:6379> set k1 v1 #设置k1 
OK
127.0.0.1:6379> msetnx k1 v1 k2 v2 #当k1和k2都不存在的时候,同时设置k1和k2,由于k1已存 在,所以这个操作失败 
(integer) 0 
127.0.0.1:6379> mget k1 k2 #获取k1、k2,k2不存在 
1) "v1" 
2) (nil) 
127.0.0.1:6379> msetnx k2 v2 k3 v3 #当k2、h3都不存在的时候,同时设置k2和k3,设置成功 
(integer) 1 
127.0.0.1:6379> mget k1 k2 k3 #后去k1、k2、k3的值 
1) "v1" 
2) "v2" 
3) "v3"

getrange:获取值的范围,类似java中的substring

127.0.0.1:6379> set test2 helloworld 
OK
127.0.0.1:6379> getrange test2 0 4 
"hello"

setrange:覆盖指定位置的值

127.0.0.1:6379> set k1 helloworld 
OK
127.0.0.1:6379> get k1 "helloworld" 
127.0.0.1:6379> setrange k1 1 java 
(integer) 10 
127.0.0.1:6379> get k1 "hjavaworld"

setex:设置键值&过期时间(秒)

127.0.0.1:6379> setex k1 100 v1 #设置k1的值为v1,有效期100秒 
OK
127.0.0.1:6379> get k1 #获取k1的值 "v1" 
127.0.0.1:6379> ttl k1 #获取k1还有多少秒失效 (integer) 96

getset:以新换旧,设置新值同时返回旧值

127.0.0.1:6379> set name ready #设置name为ready 
OK
127.0.0.1:6379> getset name tom #设置name为tom,返回name的旧值 "ready" 
127.0.0.1:6379> getset age 30 #设置age为30,age未设置过,返回age的旧值为null 
(nil)

数据结构
String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构上类似于Java的ArrayList,采用分配冗余空间的方式来减少内存的频繁分配。如图所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次会多扩容1M的空间。要注意的是字符串最大长度为512M。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习Redis基础知识,可以按照以下思路进行学习: 1. 了解Redis的概念和特点:首先需要了解Redis是什么,它的主要特点是什么,它为什么被广泛应用于缓存、消息队列、会话管理等场景。 2. 安装和配置Redis:根据你的操作系统,安装Redis并进行相关配置。可以参考Redis官方文档或其他教程来完成这一步。 3. 学习Redis的数据结构:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。了解每种数据结构的特点、用途和操作命令,并通过实际操作来加深理解。 4. 掌握Redis的常用命令:学习Redis的常用命令,如get、set、hget、hset、lpush、lrange、sadd、smembers等,了解每个命令的具体用法和参数含义。 5. 理解Redis的持久化机制:了解Redis的RDB和AOF两种持久化方式,以及它们的优缺点。学习如何进行备份和恢复数据。 6. 学习Redis的事务和Lua脚本:了解Redis事务的基本概念和使用方法,以及如何使用Lua脚本来进行复杂的操作。 7. 深入了解Redis的性能优化和高可用方案:学习如何优化Redis的性能,包括配置调优、使用合适的数据结构、合理地使用缓存等。同时了解Redis的高可用方案,如主从复制、哨兵模式和集群模式。 8. 学习Redis与其他技术的结合:了解Redis如何与其他技术进行结合,如与Python、Java等编程语言的配合使用,以及与Spring、Django等框架的整合。 以上是学习Redis基础知识的一个思路,你可以根据自己的实际情况和需求进行学习和拓展。推荐参考一些经典的Redis教程和实战案例,通过实际操作和项目实践来提升自己的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值