Bota5ky

Redis笔记(一):基础命令

设置远程redis

demo工具网站:https://app.redislabs.com

远程登录

redis-cli -u redis://<username>:<password>@redis-16985.c14.us-east-1-2.ec2.cloud.redislabs.com:16985

性能测试

redis-benchmark

在macOs上查看Redis配置文件

cat /usr/local/etc/redis.conf

默认16个数据库,可以使用SELECT <index>切换数据库

DBSIZE # 查看数据库当前使用的大小
KEYS * # 查看所有的key
FLUSHDB # 清空当前库
FLUSHALL # 清空全部库
MOVE <key> <db> # 移动到指定数据库
EXPIRE <key> <seconds>
TTL <key> # 查看剩余时间 -1表示不会过期 -2表示已过期
TYPE <key> # 查看key类型

Redis 使用单线程的原因主要有以下几点:

  1. 减少锁竞争:Redis 的核心操作是基于内存的,使用单线程可以避免多线程环境下的锁竞争问题,提高性能。由于单线程模型避免了线程切换和上下文切换的开销,可以更高效地利用 CPU。
  2. 避免复杂性:多线程编程涉及到线程同步、数据一致性等复杂问题。使用单线程可以避免这些复杂性,使代码更加简单、可靠,减少潜在的错误。
  3. 避免资源竞争:Redis 的主要瓶颈是 CPU 和内存带宽,而不是计算能力。使用单线程可以充分利用 CPU 的计算能力,避免了多线程之间因为资源竞争而导致的性能下降。
  4. 高效的网络模型:Redis 使用非阻塞的 I/O 多路复用模型,单线程可以处理大量的并发连接。这种模型在处理高并发读写请求时非常高效,避免了线程间切换的开销。

需要注意的是,尽管 Redis 主线程是单线程的,但它通过使用异步 I/O 和多路复用技术实现了非阻塞的网络通信和高并发处理能力。此外,Redis 也提供了一些并发操作的指令,如使用多个 Redis 实例进行数据分片来提高整体性能。

String

Store plain string or number

  • SET
  • GET
  • APPEND # 如果不存在,相当于SET <key>
  • EXISTS
  • INCR
  • DECR
  • INCRBY
  • DECRBY
  • GETRANGE # 包含start和end,end为-1在倒数第1的位置
  • SETRANGE # 从offset开始替换成value,替换的范围为value的长度
  • SETEX # 设置key-value和过期时间,不存在则创建
  • SETNX # 成功返回1,否则0(在分布式锁中常常会使用)
  • MSET
  • MGET
  • MSETNX # 有一个存在则全部失败,原子性操作
  • GETSET # 先get再set,不存在返回nil,同样会设置新值

List

List of strings,实际上是个链表

  • LLEN
  • LINSERT
  • LPUSH # 不存在则创建
  • RPUSH # 在尾部添加值
  • LPOP
  • RPOP
  • LINDEX # 找到第index个key的位置,从0开始,末尾从-1开始,越界报错
  • LRANGE
  • LREM # 最多移除count个数的value,精确匹配
  • LTRIM # 截取list部分元素
  • RPOPLPUSH
  • LSET # 没有key或者超出原有key的index范围都报错
  • LINSERT BEFORE|AFTER

Hash

Collection of key-value pairs

  • HGET
  • HSET [field value ...]
  • HMGET
  • HGETALL
  • HMSET
  • HDEL
  • HLEN
  • HEXISTS
  • HKEYS
  • HVALS

Set

Set of strings (each string is unique)

  • SADD
  • SREM
  • SCARD # 获取元素总个数 cardinality 基数
  • SDIFF [key ...] # 差集
  • SINTER [key ...] # 交集
  • SUNION [key ...] # 合集
  • SISMEMBER
  • SMEMBERS # 显示所有元素
  • SPOP # 随机移除元素
  • SRANDMEMBER # 随机count个数的获取元素
  • SMOVE

Sorted Set

Set of strings in a particular order

  • ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member...]
  • ZDIFF
  • ZCOUNT
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # -inf +inf ZREVRANGEBYSCORE 逆序

Bitmap

Kind of like a collection of booleans

  • BITOP
  • BITCOUNT
  • BITPOS

Hyperloglog

Kind of like a collection of booleans

  • PFADD
  • PFCOUNT
  • PFMERGE

JSON

Nested JSON structure

  • JSON.SET
  • JSON.GET
  • JSON.DEL

Index

Internal data used for searching

  • FT.SEARCH
  • FT.CREATE
  • FT.PROFILE

Documentation for commands: https://redis.io/commands

posted @ 2023-05-15 16:18  Bota5ky  阅读(10)  评论(0编辑  收藏  举报