redis数据类型

 

Redis安装参考这篇文章:Redis源码编译安装_redis源码下载-优快云博客

键(key)操作

  • keys * 查看当前库所有key
 
  1. 127.0.0.1:6379> keys *

  2. (empty array)

  3. 127.0.0.1:6379> set k1 lucy

  4. OK

  5. 127.0.0.1:6379> set k2 mary

  6. OK

  7. 127.0.0.1:6379> set k3 jack

  8. OK

  9. 127.0.0.1:6379> keys *

  10. 1) "k2"

  11. 2) "k3"

  12. 3) "k1"

  • exists key 判断某个key是否存在,例如 exists k1 (k1是否存在)
 
  1. 127.0.0.1:6379> exists k1

  2. (integer) 1

  3. 127.0.0.1:6379> exists k4

  4. (integer) 0

  • type key 查看你的key是什么类型,例如 type k2 (查看k2的类型)
 
  1. 127.0.0.1:6379> type k2

  2. string

  • del key 删除指定的key数据,例如 del k3 (删除k3的数据)
 
  1. 127.0.0.1:6379> del k3

  2. (integer) 1

  3. 127.0.0.1:6379> keys *

  4. 1) "k2"

  5. 2) "k1"

  • unlink key:根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,(真正的删除会在后续异步操作根据value选择非阻塞删除 )
 
  1. 127.0.0.1:6379> keys *

  2. 1) "k2"

  3. 2) "k1"

  4. 127.0.0.1:6379> unlink k2

  5. (integer) 1

  6. 127.0.0.1:6379> keys *

  7. 1) "k1"

  • expire key 10 10秒钟:为给定的key设置过期时间
 
  1. 127.0.0.1:6379> keys *

  2. 1) "k1"

  3. 127.0.0.1:6379> expire k1 10

  4. (integer) 1

  5. 127.0.0.1:6379> keys *

  6. (empty array)

  • ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
 
  1. 127.0.0.1:6379> ttl t1

  2. (integer) -2

  • select 命令切换数据库,如: select 8
 
  1. 127.0.0.1:6379> select 3

  2. OK

  3. 127.0.0.1:6379[3]> select 0

  4. OK

  • dbsize 查看当前数据库的key的数量
 
  1. 127.0.0.1:6379> dbsize

  2. (integer) 0

  3. 127.0.0.1:6379> set k1 sxx

  4. OK

  5. 127.0.0.1:6379> dbsize

  6. (integer) 1

  • flushdb 清空当前库
 
  1. 127.0.0.1:6379> dbsize

  2. (integer) 1

  3. 127.0.0.1:6379> flushdb

  4. OK

  5. 127.0.0.1:6379> dbsize

  6. (integer) 0

字符串String

简介

  • String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

  • String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

  • String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

单键单值

  • set <key> <value> 指令添加键值对
 
  1. 127.0.0.1:6379> set name fox

  2. OK

  1. *NX:当数据库中key不存在时,可以将key-value添加数据库
  2. *XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
  3. *EX:key的超时秒数
  4. *PX:key的超时毫秒数,与EX互斥
  • get <key> 查看对应键值:
 
  1. 127.0.0.1:6379> get name

  2. "fox"

  • append <key> <value> 追加到原值的末尾:
 
  1. 127.0.0.1:6379> append name 01

  2. (integer) 5

  3. 127.0.0.1:6379> get name

  4. "fox01"

  • setnx <key> <value> 指令只有 key 不存在时,才加入该 key 的值
 
  1. 127.0.0.1:6379> setnx name fox

  2. (integer) 0

  3. 127.0.0.1:6379> setnx gender man

  4. (integer) 1

  5. 127.0.0.1:6379> get gender

  6. "man"

 自增自减

  • incr <key> 指令将 key 中储存的数字值增 1,只能对数字值操作,如果为空,新增值为 1
  • decr <key> 指令将 key 中储存的数字值减 1,只能对数字值操作,如果为空,新增值为 -1
 
  1. 127.0.0.1:6379> get age

  2. (nil)

  3. 127.0.0.1:6379> incr age

  4. (integer) 1

  5. 127.0.0.1:6379> get age

  6. "1"

  7. 127.0.0.1:6379> decr age

  8. (integer) 0

  9. 127.0.0.1:6379> get age

  10. "0"

  • incrby / decrby <key> <步长> 指令将 key 中储存的数字值增减。自定义步长:
 
  1. 127.0.0.1:6379> incrby age 10

  2. (integer) 10

  3. 127.0.0.1:6379> get age

  4. "10"

  5. 127.0.0.1:6379> decrby age 56

  6. (integer) -46

  7. 127.0.0.1:6379> get age

  8. "-46"

自增自减操作具有原子性

所谓原子操作是指不会被线程调度机制打断的操作;

这种操作一旦开始,就一直运行到结束,中间不会有任何 (切换到另一个线程)。

(1)在单线程中, 能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。

(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。

Redis单命令的原子性主要得益于Redis的单线程。

多键多值

  • mset <key1> <value> <key2> <value2> ...... 指令设置一个或者多个 key-value 键值对
  • mget <key1> <key2> ...... 指令获取一个或者多个 key-value 键值对
 
  1. 127.0.0.1:6379> mset email test@163.com phone 123456

  2. OK

  3. 127.0.0.1:6379> keys *

  4. 1) "phone"

  5. 2) "age"

  6. 3) "email"

  7. 4) "name"

  8. 5) "gender"

  9. 127.0.0.1:6379> mget email phone name

  10. 1) "test@163.com"

  11. 2) "123456"

  12. 3) "fox01"

range范围

  • getrange <key> <起始位置> <结束位置> 指令获得值的范围,前包,后包,类似 java 中的 substring
  • setrange <key> <位置> <newValue> 指令设置指定区间范围内的值,用<value> 覆写<key>所储存的字符串值,从<起始位置>开始(索引从0开始)。
 
  1. 127.0.0.1:6379> set key1 abcdef

  2. OK

  3. 127.0.0.1:6379> getrange key1 0 3

  4. "abcd"

  5. 127.0.0.1:6379> getrange key1 0 -1

  6. "abcdef"

  7.  
  8. 127.0.0.1:6379> get key1

  9. "abcdef"

  10. 127.0.0.1:6379> SETRANGE key1 23 "newvalue"

  11. (integer) 31

  12. 127.0.0.1:6379> get keyt1

  13. (nil)

  14. 127.0.0.1:6379> get key1

  15. "abcdef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00newvalue"

  16. 127.0.0.1:6379>

 

键值条件

  • setex <key> <过期时间/秒> <value> 指令设置键值的同时,设置过期时间,单位秒
 
  1. 127.0.0.1:6379> setex key2 10 expire

  2. OK

  3. 127.0.0.1:6379> ttl key2

  4. (integer) 6

  5. 127.0.0.1:6379> ttl key2

  6. (integer) 1

  7. 127.0.0.1:6379> ttl key2

  8. (integer) -2

  9. 127.0.0.1:6379> ttl key2

  10. (integer) -2

  11. 127.0.0.1:6379> get key2

  12. (nil)

  • psetex <key> <过时间/毫秒> <value> 指令设置键值的同时,设置过期时间,单位毫秒
 
  1. 127.0.0.1:6379> psetex key3 1 expire

  2. OK

  3. 127.0.0.1:6379> get key3

  4. (nil)

  • getset <key> <value> 指令以新换旧,设置了新值同时获得旧值
 
  1. 127.0.0.1:6379> getset db mongodb

  2. (nil)

  3.  
  4. 127.0.0.1:6379> get db

  5. "mongodb"

  6. 127.0.0.1:6379> getset db redis

  7. "mongodb"

  8. 127.0.0.1:6379> get db

  9. "redis"

 

redis数据库缓存

发布于2024-10-30著作权归作者所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值