Redis-数据类型、事务、发布订阅、服务器命令

1、Redis 五大数据类型

Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set:有序集合)。

1.1 字符串数据类型操作命令

# 创建键值: 
set key value [EX seconds] [PX milliseconds] [NX|XX]
        EX  以秒作为过期时间        
        PX  以毫秒作为过期时间,两者不能一起使用        
        NX  表示键不存在时创建,也就是如果键已经存在了,不会覆盖。        
        XX  表示键存在时就覆盖原先值,不存在则不创建。
GET key     获取键值 
GETSET key value    修改一个键值,并返回旧值 
mset key value  key2 value2 ...  一次性创建多个键值 
MGET KEY1 KEY2          获取一个或者多个给定key的值 
DEL key         删除键值 
EXISTS key      检查给定的key是否存在 
TTL key         以秒为单位,返回给定key的剩余生存时间 
EXPIRE key seconds          为key设置过期时间 
PEXPIRE key milliseconds            设置key的过期时间以毫秒计 
KEYS pattern        查找所有符合给定模式的key
     *       匹配所有字符     
     ?      匹配单个字符     
     [abc]   匹配a或者b或者c 
 MOVE key db             将当前数据库的key移动到数据库db当中 
 PERSIST key     移除key的过期时间,key将持久保存 
 RANDOMKEY           从当前数据库中随机返回一个key 
 RENAME key newkey       修改key的名称 
 RENAMENX key newkey         仅当newkey不存在时,将key改名为newkey,如果已经存在,则不改 
 TYPE key            返回key所存储的值的类型

1.2 链表数据类型操作命令
链表是一个双向可读写的管道,头部是左边,尾部是右边,一个链表多可以包含2的32次方减一,也就是4G个元素。

LPUSH key value [value ...]     在头部(左边)插入链表元素 
RPUSH key value [value ...]     在尾部(右边)插入链表元素 
LRANGE key start stop       查看链表的元素,start,stop表示的是索引起始点和结束点
LRANGE key 0 -1     查看链表的所有元素 
RPOP key    删除链表的尾部元素 
LPOP key    删除链表的首部元素 
LREM key count value        删除链表中的元素
        count       表示删除几个元素,默认从左往右删,如果是从右往左就用-count,  比如lrem name  -2 meixi 表示从右往左删除两个meixi 
LINSERT key BEFORE|AFTER pivot value       在链表的某个元素前或者后插入一个值
        pivot        指定某个已经存在的元素

1.3 集合数据类型操作命令

集合特点:无序性,唯一性

SADD key member [member ...]    添加集合元素,如果这个key没有,就创建 
SMEMBERS key    查看集合元素 
SREM key member [member ...]    删除集合元素 
SPOP key [count]       随机删除元素,默认是删除一个 
SRANDMEMBER key [count]      随机返回集合元素,默认是一个 
SISMEMBER key member    判断元素是否在集合中,是返回1,不是返回0 
SINTER key [key ...]    求两个集合的交集 
SUNION key [key ...]    求两个集合的并集 
SINTERSTORE destination key [key ...]    把求出来的交集进行存储 
SUNIONSTORE destination key [key ...]       把求出的并集进行存储

1.4 哈希数据类型操作命令

hash是字符串类型的field和value的映射表,一般用于做存储对象。每个hash可以存储2的32次方减 一,也就是4G键值对。

HSET key field value    设置哈希值 
范例:
    HSET user1 name cluo
    HSET user1 age 30    
    HSET user1 job football
HGETALL key     获取key中的所有域和值 
HGET key field      获取key中某个域的值 
HMGET key field [field ...]     获取key中多个域的值 
HDEL key field [field ...]      删除key中某个域和值

2、Redis 事务

redis支持简单的事务,不支持回滚,支持取消事务

实例一:

#设置两个初始值
127.0.0.1:6379> set cluo 500
OK
127.0.0.1:6379> set meixi 500
OK
#开启事务
127.0.0.1:6379> multi
OK
#减100
127.0.0.1:6379> decrby cluo 100
QUEUED
#加100
127.0.0.1:6379> incrby meixi 100
QUEUED
#执行事务
127.0.0.1:6379> exec
1) (integer) 400
2) (integer) 600
3) "400"
#结果
127.0.0.1:6379> get cluo
"400"
127.0.0.1:6379> get meixi
"600"

实例二:

#设置初始值
127.0.0.1:6379> set cluo 500
OK
#开启事务
127.0.0.1:6379> multi
OK
#减100
127.0.0.1:6379> decrby cluo 100
QUEUED
#取消事务
127.0.0.1:6379> discard
OK
#结果
127.0.0.1:6379> get cluo
"500"

3、Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。

3.1 发布频道、订阅频道

#发布一个频道,因为还没人订阅,所以返回0 
127.0.0.1:6379> publish xijia "Welcome to xijia"
(integer) 0
# 再开启一个连接,订阅该频道
127.0.0.1:6379> subscribe xijia
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "xijia"
3) (integer) 1
1) "message"
2) "xijia"
# 因为是刚订阅,所以以前的消息没有收到,可以再发布一条消息测试。
# 重新发布一条消息
127.0.0.1:6379> publish xijia "Welcome to xijia"
(integer) 1
#有一个订阅,所以返回1
#另一端订阅到该消息
127.0.0.1:6379> subscribe xijia
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "xijia"
3) (integer) 1
1) "message"
2) "xijia"
3) "Welcome to xijia"

订阅多个频道

127.0.0.1:6379> psubscribe xi*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "xi*"
3) (integer) 1

# 查看活跃的频道
127.0.0.1:6379> pubsub channels
1) "xijia"

发布订阅常用命令

PUBLISH channel message 将信息发送到指定的频道。 
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。 
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。 
PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。 
UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。 
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。

4、Redis 服务器命令

CLIENT LIST             获取连接到服务器的客户端连接列表 
CLIENT SETNAME connection-name  设置当前连接的名称 
CLIENT GETNAME      获取连接的名称 
CLIENT KILL ip:port     关闭客户端连接,开启一个新的连接 
CONFIG  GET * 获取Redis服务器所有配置信息 
CONFIG GET parameter        获取指定配置参数的值 
CONFIG SET parameter value   修改 redis 配置参数,无需重启 
DBSIZE          返回当前数据库的 key 的数量 
BGREWRITEAOF        异步执行一个 AOF(AppendOnly File) 文件重写操作 
BGSAVE          在后台异步保存当前数据库的数据到磁盘 
SAVE            在主进程同步保存数据到硬盘 
FLUSHALL        删除所有数据库的所有key 
FLUSHDB         删除当前数据库的所有key 
SHUTDOWN [NOSAVE] [SAVE]            异步保存数据到硬盘,并关闭服务器(不要轻易执行) 
SLAVEOF host port     将当前服务器转变为指定服务器的从属服务器(slave server) 
ROLE            返回主从实例所属的角色
SYNC     用于复制功能(replication)的内部命令
发布了34 篇原创文章 · 获赞 1 · 访问量 508

猜你喜欢

转载自blog.csdn.net/weixin_42440154/article/details/103879992