|NO.Z.00103|——————————|LinuxNetwork|——|Linux&NoSQL.V03|
一、Redis常用命令:string 类型及操作
### --- string 类型及操作
~~~ string 是最简单的类型,一个 key 对应一个 value,string 类型是二进制安全的。
~~~ redis 的 string 可以包含任何数据。
### --- set:设置 key 对应的值为 string 类型
~~~ 例如:我们添加一个 name=atguigu 的键值对应
redis 127.0.0.1:6379>set name atyanqi
[root@server21 ~]# redis-server /usr/local/redis/etc/redis.conf
[root@server21 ~]# redis-cli
redis 127.0.0.1:6379> set name atyanqi
OK
redis 127.0.0.1:6379> get name
"atyanqi"
### --- setnx:设置 key 对应的值为 string 类型,如果 key 已经存在,
~~~ 返回 0,nx 是 not exist 的意思
redis 127.0.0.1:6379> setnx name atyanqi // 检查设置的键值是否存在,若是存在则不生设置
(integer) 0
### --- get:获取 key 对应的 string 值,如果 key 不存在返回 nil
redis 127.0.0.1:6379> get name
"zhangsan"
### --- mset & mget 同时设置和获取多个键值对
redis 127.0.0.1:6379> mset age 18 sex man // 同时设置多个键值对
OK
redis 127.0.0.1:6379> get name age sex // 同时获取多个键值得值
1) "zhangsan"
2) "18"
3) "man"
### --- incrby:对 key 的值做加加(指定值)操作,并返回新的值
redis 127.0.0.1:6379> incrby age 5
(integer) 23
redis 127.0.0.1:6379> incrby age 2
(integer) 25
redis 127.0.0.1:6379> incrby age -5
(integer) 20
### --- del:删除一个已创建的 key
redis 127.0.0.1:6379> del age
(integer) 1
redis 127.0.0.1:6379> get age
(nil)
二、hash 类型及操作

### --- hash 类型及操作
~~~ Redis hash 是一个 string 类型的 field(字段)和 value 的映射表,
~~~ 它的添加、删除操作都是 0(1)平均;hash 特别适合用于存储对象,
~~~ 相较于将对象的每个字段存成单个 string 类型,
~~~ 将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。
### --- hset:设置 hash field 为指定值,如果 key 不存在,则先创建。
~~~ 例如:为 num1 表创建一个叫 name 字段(key),键值是 yanqi
redis 127.0.0.1:6379> hset num1 name yanqi
(integer) 1
### --- hget、hmset、hmget 意义同上近似
~~~ hdel:删除制定表中的某一个键值对
~~~ hgetall:列出表中的所有键值对
redis 127.0.0.1:6379> hset num1 age 18
(integer) 1
redis 127.0.0.1:6379> hset num1 sex man
(integer) 1
redis 127.0.0.1:6379> hset num2 name lisi
(integer) 1
redis 127.0.0.1:6379> hset num2 age 25
(integer) 1
redis 127.0.0.1:6379> hset num2 sex man
(integer) 1
redis 127.0.0.1:6379> hget num2 age
"25"
redis 127.0.0.1:6379> hmget num1 name age sex
1) "yanqi"
2) "18"
3) "man"
redis 127.0.0.1:6379> hdel num1 sex
(integer) 1
redis 127.0.0.1:6379> hmget num2 name age
1) "lisi"
2) "25"
redis 127.0.0.1:6379> hgetall num2
1) "name"
2) "lisi"
3) "age"
4) "25"
5) "sex"
6) "man"
三、list 类型及操作
### --- list 类型及操作
~~~ list 是一个链表结构,主要功能是 push、pop、获取一个范围内的所有值等等,
~~~ 操作中 key 理解为链表的名字。
~~~ Redis 的 list 类型其实就是一个每个子元素都是 string 类型的双向链表。
~~~ 我们可以通过push、pop 操作从链表的头部或尾部添加删除元素。
### --- lpush:在 key 对应 list 的头部添加字符串元素。
redis 127.0.0.1:6379> lpush zhangsan zhangsan
(integer) 1
redis 127.0.0.1:6379> lpush zhangsan 18
(integer) 2
### --- lrange:从指定链表中获取指定范围的元素
~~~ 0 -1:此范围代表全部元素,意为从头到尾
127.0.0.1:6379> lrange zhangsan 0 -1
1) "18"
2) "zhangsan"
四、lpush、rpush、lpop、rpop、lrange 详见图示

五、Set 类型及操作

### --- Set 类型及操作
~~~ set 是集合,他是 string 类型的无序集合。Set 是通过 hash table 实现的,
~~~ 对集 、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和 blog 的 tag 功能。
~~~ 集合不允许有重复值。
### --- sadd:添加一个或多个元素到集合中
redis 127.0.0.1:6379> sadd mset 1 2 3 4
(integer) 4
### --- smembers:获取集合里面所有的元素
redis 127.0.0.1:6379> smembers mset
1) "1"
2) "2"
3) "3"
4) "4"
### --- srem:从集合中删除指定的一个或多个元素
redis 127.0.0.1:6379> srem mset 2 4
(integer) 2
redis 127.0.0.1:6379> smembers mset
1) "1"
2) "3"
### --- spop:随机从集合中删除一个元素,并返回
redis 127.0.0.1:6379> spop mset
"3"
redis 127.0.0.1:6379> smembers mset
1) "1"
### --- scard:获取集合里面的元素个数
redis 127.0.0.1:6379> scard mset
(integer) 1
### --- sdiff:返回集合 1 与集合 2 的差集。以集合 1 为主
redis 127.0.0.1:6379> sdiff mset1 mset2
### --- sinter:
~~~ 获得两个集合的交集
### --- sunion:
~~~ 获得指定集合的并集
六、zset 类型及操作

### --- zset 类型及操作
~~~ zset 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,
~~~ 这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。
~~~ 可以理解为有两列的 mysql 表,一列存的 value,一列存的顺序。
~~~ 操作中 key 理解为 zset 的名字。
### --- zadd:向一个指定的有序集合中添加元素,每一个元素会对应的有一个分数。
~~~ 你可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了,
~~~ 那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。
~~~ 分数的值必须是一个表示数字的字符串。
redis 127.0.0.1:6379> zadd zset 2 zhangsan 1 lisi 1 wangwu
(integer) 3
### --- zrange:返回有 序集合中,指定区间内的成员。
~~~ 其中成员按照 score(分数)值从小到大排序。
~~~ 具有相同 score 值的成员按照字典顺序来排列。
~~~ 注: withscores 返回集合中元素的同时,返回其分数(score)
redis 127.0.0.1:6379> zrange zset 0 -1 withscores
1) "lisi"
2) "1"
3) "wangwu"
4) "1"
5) "zhangsan"
6) "2"
### --- zrem:删除有序集合中指定的值
redis 127.0.0.1:6379> zrem zset zhangsan
(integer) 1
127.0.0.1:6379> zrange zset 0 -1 withscores
1) "lisi"
2) "1"
3) "wangwu"
4) "1"
### --- zcard:返回有序集合元素的个数
redis 127.0.0.1:6379> zcard zset
(integer) 2
七、其他相关命令
### --- keys:按照键名查找指定的键。支持通配符(* ?等)
redis 127.0.0.1:6379> keys *set
1) "zset"
2) "mset"
### --- exists:确认一个键是否存在(1 表示存在)
redis 127.0.0.1:6379> exists name
(integer) 1
### --- del:删除一个键(通用)
### --- expire:设置一个键(已存在)的过期时间,如果键已经过期,将会被自动删除
### --- ttl:以秒为单位,返回指定键的剩余有效时间
~~~ 当 key 不存在时,返回 -2 。
~~~ 当 key 存在但没有设置剩余生存时间时,返回 -1 。
~~~ 否则,以秒为单位,返回 key 的剩余生存时间。
redis 127.0.0.1:6379> set name zhangsan
OK
redis 127.0.0.1:6379> ttl name
(integer) -1
### --- select:
~~~ 选择一个数据库,默认连接的数据库是 0,可以支持共 16 个数据库。
~~~ 在配置文件中,通过databases 16 关键字定义。
### --- move:将当前数据库的键移动到指定的数据库中
redis 127.0.0.1:6379> move mset 1
(integer) 1
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> keys *
1) "mset"
### --- type:返回键的类型
redis 127.0.0.1:6379[1]> type mset
set
### --- dbsize:返回当前库中键的数量(所有类型)
redis 127.0.0.1:6379[1]> dbsize
(integer) 1
redis 127.0.0.1:6379[1]> keys *
1) "mset"
### --- save:
~~~ 保存所有的数据。很少在生产环境直接使用 SAVE 命令,
~~~ 因为它会阻塞所有的客户端的请求,可以使用 BGSAVE 命令代替.
~~~ 如果在 BGSAVE 命令的保存数据的子进程发生错误的时,
~~~ 用 SAVE命令保存最新的数据是最后的手段。
redis 127.0.0.1:6379[1]> save
OK
### --- info:获取服务器的详细信息
redis 127.0.0.1:6379[1]> info
### --- config get:获取 redis 服务器配置文件中的参数。支持通配符
redis 127.0.0.1:6379[1]> config get *
### --- flushdb:删除当前数据库中所有的数据
redis 127.0.0.1:6379[1]> flushdb
OK
redis 127.0.0.1:6379[1]> keys *
(empty list or set)
### --- flushall:删除所有数据库中的所有数据
redis 127.0.0.1:6379[1]> flushall
OK
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv007-network
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」