Redis.Note1

本文介绍了Redis的基本特性,包括其内存模型、持久化机制及作为数据库、缓存和消息队列的应用场景。此外还详细列举了Redis的各种命令,涵盖数据操作、键管理、事务处理以及发布订阅等功能,并对几种主要的数据结构进行了说明。

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

个人Redis默认port  6379

PID: 9251

 

1.Redis特点:专有的内存,不共享。

     持久化。

2.用途:作为DB,Cache,Queue三种用途。

 

 

3.从主流的说话上,Redis是单线程模型,但是不能说Redis完全是单线程模型的,Memcache是多线程模型的

 

 

4.系统级命令,不属于那个数据结构:

4.1 keys:用于模式匹配

keys pattern(* ? \e(这个代表匹配e) [abc](abc之间任意一个)等等)

 

 

4.2 exists key:判断指定的key是否存在

 

4.3 del:可以删除1个或多个键

 

4.4 type:返回键类型

 

4.5 randomkey:随机返回一个key

 

4.6 expire :如果你要做缓存,你一定要有一个过期时间

expire key seconds

为给定的key设置过期时间

 

expire nbme 6

(integer) 1

 get nbme

"jack"

get nbme

(nil)

 

4.7pexpire key 毫秒 作用与4.6相同

 

4.8expireat key timestamp(毫秒)某个具体时间过期

 

4.9pexpireat key timestamp(微秒)

 

4.10ttl: 返回我的key的生存时间(秒为单位)

 

4.11pttl :上同,单位是毫秒。

 

4.12sort:排序

 

4.13select 数字 切换数据库 redis里面有16个数据库

 

 

 

 

5.String类型:

  5.1数据最大容量是512MB

5.2赋值与取值:set/get

5.3incr key 递增(i++,++i) decr key递减

5.4incrby key increment 增加指定的整数  

  Decrby key decrement 减少指定的整数

5.5incrbyfloat 增加指定的浮点数

5.6append key value 向尾部追加值

5.7strlen key 获取字符串的长度

5.8mget mset 一次获得多个值或者设置多个值 减少带宽

mget msg name

1) "helloworld nihao"

2) "11"

5.9setrange

         getrange

GETRANGEmsg 6 10

SETRANGE msg 6 hahahaahaha

(integer) 17

get msg

"hellowhahahaahaha"

 

5.10setex key second value 赋值并加上过期时间

5.11getbit key offset获取二进制中offset这个位置的”0,1”状态

   Setbit key offset value 设置二进制中offset这个位置的”0,1”状态

   bicount key 获取二进制中1的个数

   Bitop operation 二进制位的操作(^ & |)

 

bit的妙用,可以统计上线天数(类似的问题),setbit xxx 100 1

最后再用bitcount xxx就可以获得上线天数

 

 

 

 

6.哈希在dictionary中的存储

Dictionary key: string类型 value=> dictionary

1. hset key field value   (keyredis中的key,fieldmap中的key)

2. hget key field

3. hmset key field value field value ->减轻网路带宽[高性能]

4. hmget

5. hgetall 遍历字典中的所有key/value

6. hexists 判断字典中的key是否存在

7. hsetnx  nx  = not exists 当字段不存在的时候赋值(原子性)

8. hincrby key field increment 增加

9. Hdel key field

10. hkeys key

   hvals key

11. hlen key

hash的优点:查找o(1)非常适合于定值查找

 

 

7.列表类型:

1.lpush key value 链表左端插入值

2.rpush key value 链表右端插入值

3.llen key 获取列表中元素的个数

4.lpop key

5.rpop key

6.lrange key start stop 获取列表片段 O(n)

7.lrem key count value

8.lrem key count value count>0从列表左边开始删前n个值为value的元素                count<0从列表右边开始删前n个值为value的元素

      count=0 删除所有值为value的元素

9.lindex key index 获得指定索引的元素值

10.lset key index value 设置指定索引的元素值

11.ltrim key start end可以删除指定索引范围之外的所有元素

12.linsert key before|after xxx value

13.rpoplpush 原列表 目标列表 使一个元素从原列表转移到目标列表 用来做数据迁移

 

 

8.集合类型:

8.1 sadd key member 添加元素到集合中

8.2 srem key member 删除集合中的元素

8.3 smembers key 显示集合所有元素

8.4sismember key member 判断元素是否在集合中

8.5集合间的运算:

sdiff key ... 差集

sinter key... 交集

sunion key... 并集

scard 获取集合中的元素个数

sdiffstore 目标集合 key...

sinterstore 目标集合 key...

sunionstore 目标集合 key...

8.6srandmember key [count] 随机获得集合中的元素

8.7spop key 从集合中弹出一个元素

 

 

9.有序集合类型(SortedSet):

9.1SortedSet(SkipList) 用链表的玩法来做到CURD logN的复杂度

zadd key score(用来排序) member

9.2zscore key member 获取member的分数

9.3zrange key start stop [withscores] start stop 是索引

  Zrevrange key start stop [withscores] 倒序

9.4zrangebyscore key min max [withscores] limit offset count     minmax是分数

  zrevrangebyscore key max min [withscores] limit offset count

 

获取最热门的top10的文章

Zrevrangebyscore articles 无限 0 limit 0 10

 

 

10.事务

multi 事务开始

exec  事务执行

watch watch命令可以监控一个或者多个键,一旦其中有一个键被修改,之后的事务就不会执行。

 

 

11.订阅与发布功能

subscribe channel

public channel message

 

psubscribe pattern 订阅一个或多个符合模式的频道

比如psubscribe channel.*

 

11.redis中的两种序列化方式:

RDB  [快照]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值