详解Redis 键和字符串常用命令

目录
  • Redis 相关知识
  • Redis中的数据类型
    • redis 键(key)
    • Redis字符串(String)
  • 常用命令
  • String的数据结构

Redis 相关知识

Redis的默认端口号为6379

默认16个数据库,类似数组下标从0开始,初始默认使用0号库。
使用命令select <dbid>来切换数据库。 如: select 8。
统一密码管理,所有库同样密码。

dbsize查看当前数据库的key的数量。
flushdb清空当前库。
flushall通杀全部库。

Redis是单线程+多路IO复用技术。
多路复用是指使用一个线程来检查多个文件描述符( Socket )的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。

串行 VS 多线程+锁 ( memcached) VS 单线程+ 多路IO复用(Redis)
Redis与Memcache三点不同:

  • 支持多数据类型
  • 支持持久化
  • 单线程+多路IO复用

Redis中的数据类型

redis 键(key)

keys *:查看当前库所有key (匹配 : keys *1)

exists key:判断某个key是否存在。
type key:查看你的key是什么类型。
del key:删除指定的key数据,

unlink key:根据value选择非阻塞删除。仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。。
expire key 10:10 秒钟,为给定的key设置过期时间,
ttl key:查看还有多少秒过期, -1表示永不过期, -2表示已过期。

select命令切换数据库,
dbsize查看当前数据库的key的数量。
flushdb清空当前库。
flushall通杀全部库

Redis字符串(String)

String是Redis 最基本的类型,一个key对应一个value。
String类型是二进制安全的。 意味着Redis的string可以包含任何数据。比如jpg图片
或者序列化的对象。
String类型是Redis最基本的数据类型, 一个Redis中字符串value最多可以是512M。

常用命令

set、get等

set <key> <value>:添加键值对。
当设置过值的key再被设置一个新的值时,新的值会覆盖旧的。

*NX:当数据库中key不存在时,可以将key-value添加数据库。
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥。
*EX: key的超时秒数。
*PX: key 的超时毫秒数,与EX互斥。

get <key> 查询对应键值.
append <key> <value>将给定的< value >追加到原值的末尾,
strlen <key> 获得值的长度。
setnx <key> <value>只有在key不存在时设置 key的值.

增减建的值

incr <key>

将key中储存的数字值增1。
只能对数字值操作,如果为空,新增值为10

decr <key>

将key中储存的数字值减1。
只能对数字值操作。如果为空,新增值为-1。

inrjy/ decrby <key><步长> 将key中储存的数字值增减。自定义步长。

注意:
incr和decr是原子操作
而java中的i++则不是原子操作

mset、mget和msetnx

mset <key1> <value1> <key2> <value2> ....

同时设置一个或多个key-value对。

mget <key1> <key2> <key3>

同时获取一个或多个value。

msetnx <key1> <value1> <key2> <value2>

它是原子性的
同时设置一个或多个 key-value对,当且仅当所有给定key都不存在时,才成功。

有一个是之前存在的则不成功

getrange、setrange

getrange <key> <起始位置><结束位置>

获得值的范围,类似java中的substring ,前包,后包

setrange <key> <起始位置> <value>

用覆写所储存的字符串值,从<起始位置:开始(索引从0开始)。

设置过期时间

setex <key> <过期时间><value>

设置键值的同时,设置过期时间,单位秒。

替换旧值

getset <key> <value>

以新换旧,设置了新值同时获得旧值。

String的数据结构

String的数据结构为简单动态字符串(Simple Dynamic String,縮写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList ,采用预分配冗余空间的方式来减少内存的频繁分配。

如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。

到此这篇关于Redis 键和字符串常用命令的文章就介绍到这了,更多相关Redis 常用命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis 不使用 keys 命令获取键值信息的方法

    1. 问题来源 这个问题可能看起来很奇怪,但很多 redis 集群会有一个统一的入口,入口会作兼容 redis 命令的代理,一般出于新能考虑是禁止使用 keys 命令来获取键值信息的,但是可以通过 scan 命令来代替 keys 2. 使用 keys 的方法 127.0.0.1:6379> KEYS * 1) "_kombu.binding.test_queue" 2) "a8e620b9-e52e-3498-8a1c-448f35783058" 3) &qu

  • Redis字符串类型的常用命令小结

    Redis字符串类型 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号也可以替换成其他支持glob风格通配符格式,具体规则如下: ?:匹配一个字符 *:匹配任意个(包括0个)字符 []:匹配括号间多大任一个字符,可

  • redis命令行查看中文不乱码的方法(十六进制字符串处理)

    redis命令行查看中文不乱码 Redis在使用命令行操作时,如果查看内容中包含中文,会显示16进制的字符串"\xe4\xb8\xad\xe5\x9b\xbd" 127.0.0.1:6379> set k1 '中国' OK 127.0.0.1:6379> get k1 "\xe4\xb8\xad\xe5\x9b\xbd" 如果想要看到的中文不乱码,解决方案有两种: 一.使用echo $ echo -e `redis-cli get k1` 中国 二.re

  • 详解Redis 键和字符串常用命令

    目录 Redis 相关知识 Redis中的数据类型 redis 键(key) Redis字符串(String) 常用命令 String的数据结构 Redis 相关知识 Redis的默认端口号为6379 默认16个数据库,类似数组下标从0开始,初始默认使用0号库.使用命令select <dbid>来切换数据库. 如: select 8.统一密码管理,所有库同样密码. dbsize查看当前数据库的key的数量.flushdb清空当前库.flushall通杀全部库. Redis是单线程+多路IO复用

  • 详解Redis命令和键_动力节点Java学院整理

    Redis命令用于在redis服务器上执行某些操作. 要在Redis服务器上运行的命令,需要一个Redis客户端. Redis客户端在Redis的包,这已经我们前面安装使用过了. 语法 Redis客户端的基本语法如下: $redis-cli 例子 下面举例说明如何使用Redis客户端. 要启动redis客户端,打开终端,输入命令Redis命令行:redis-cli.这将连接到本地服务器,现在就可以运行各种命令了. $redis-cli redis 127.0.0.1:6379> redis 12

  • 详解Redis 数据类型

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value. string 类型是二进制安全的.意思是 redis 的 string 可以包含任何数据.比如jpg图片或者序列化的对象. string 类型是 Redis 最基本的数据类型,string 类

  • 详解Redis瘦身指南

    Redis内存回收 Redis 服务器的最大占用内存量由配置项 maxmemory 决定,我们可以通过 config set maxmemory 2GB 的格式来配置.一旦 Redis 内存满,所有引起内存增加的操作都会被返回 error.作为专业 Redis 服务器我们通常将此项设置为0,以服务器系统内存来作为限制: 那么 Redis 使用内存达到了上限怎么办?Redis 为我们提供了几种选项以自动回收内存,可以通过配置项 maxmemory-policy 来配置: noeviction 不回

  • 详解Redis基本命令与使用场景

    Redis和Memcached对比 其中有一个比较重要的区别是关于其提供的数据结构区别 Memcached 在其数据结构中仅使用字符串和整数.因此,您保存的所有内容都可以是字符串或整数.它很复杂,因为对于整数,您可以做的唯一数据操作是添加或减去它们.如果需要保存数组或对象,则必须先将它们序列化然后保存.要阅读它们,您需要取消序列化. Redis 具有更强大的数据结构,它不仅可以处理字符串整数,还可以处理二进制安全字符串,二进制安全字符串列表,二进制安全字符串集和有序集. 关于Redis的数据结构

  • 详解Redis数据类型实现原理

    目录 1. 对象的类型与编码 ① type属性 ② encoding 属性和 *prt 指针 2. 字符串对象 ① 编码 ② 编码的转换 3. 列表对象 ① 编码 ② 编码转换 4. 哈希对象 ① 编码 ② 编码转换 5. 集合对象 ① 编码 ② 编码转换 6. 有序集合对象 ① 编码 ② 编码转换 7. 五大数据类型的应用场景 1. 对象的类型与编码 Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Re

  • 详解redis数据结构之sds

    详解redis数据结构之sds 字符串在redis中使用非常广泛,在redis中,所有的数据都保存在字典(Map)中,而字典的键就是字符串类型,并且对于很大一部分字典值数据也是又字符串组成的.以下是sds的具体存储结构: 从图中可以看出,sds的属性有三个:len.free和buf数组.这里len字段是用来保存sds字符串中所包含字符数目的,free字段则是用来保存buf数组中空余的部分的长度的,而buf数组则是实际用来保存字符串的.比如如下结构保存了"Hello World!"这个字

  • 详解redis数据结构之压缩列表

     详解redis数据结构之压缩列表 redis使用压缩列表作为列表键和哈希键的底层实现之一.当一个列表键只包含少量的列表项,并且每个列表项都是由小整数值或者是短字符串组成,那么redis就会使用压缩列表存储列表项:同理,当一个哈希表包含的键值对都是由小整数值或者是短字符串组成,并且存储的键值对数目不多时,redis也会使用压缩列表来存储哈希表.以下是压缩列表存储结构: zlbytes长度为4个字节,记录了整个压缩列表所占用的字节数 zltail长度为4个字节,记录了压缩列表起始位置到压缩列表尾节

  • 详解redis中的锁以及使用场景

    分布式锁 什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式. 为什么要使用分布式锁? ​ 为了保证共享资源的数据一致性. 什么场景下使用分布式锁? ​ 数据重要且要保证一致性 如何实现分布式锁? 主要介绍使用redis来实现分布式锁 redis事务 redis事务介绍: ​ 1.redis事务可以一次执行多个命令,本质是一组命令的集合. ​ 2.一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入 ​ **作用:**一个队列中,一次性.顺序性.排他性的执

  • 详解Redis复制原理

    前言 本文主要介绍Redis复制机制 一.配置与实践 配置 Redis实例分为主节点(master)和从节点(slave),默认情况下都是主节点.每一个从节点只能有一个主节点,但是每一个主节点可以有多个从节点(注意数量,多个从节点会导致主节点写命令多次发送从而过度消耗网络带宽,可用树状结构降低主节点负载).复制是单向的,只能从主节点复制到从节点.配置复制的方式由以下3种: 在redis-slave.conf配置文件中加入slaveof {masterHost} {masterPort} 在red

随机推荐