Redis数据类型、两种模型、事务、内部命令
1.redis数据类型
a.字符串,使用场景:常规key-value缓存应用
set name lixiang
get name
append name 123 # 字符串追加
mset key value [key value ...] # 设置多个键值对
mset name1 zhangsan name2 lisi
mget name1 name2 # 获取多个键的值
strlen name1 # 返回字符串长度
(integer) 8
set age 24
incr age # 每次加1
(integer) 25
decr age # 每次减1
exists key [key ...] # 检测某个键是否存在
incrby age 20 # 指定增加量
del name1 # 删除某个键
b.hash,使用场景:存储部分变更的数据,如用户信息等
hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
hset user1 name "Tom"
hset user1 age 25
hset user1 career "Programmer"
hget user1 name
hgetall user1 # 返回key的所有键值
hdel user1 name # 删除其中某个字段
hdelall user1 # 删除user1
c.list,Redis列表是简单的字符串列表
lpush list1 bmw benz toyota wuling # 将一个或多个值插入到列表头部
lrange list1 0 3 # 返回指定的元素
rpush list1 biyadi # 将一个或多个值插入到列表尾部
rpop list1 # 删除列表末尾的元素
llen list1 # 返回列表长度
lrem list1 2 baozi1 # 删除前两个baozi1
lrem list1 -1 baozi1 # 删除最后一个baozi1
lrem list1 0 baozi1 # 删除所有baozi1
lindex list1 2 # lindex key index返回下标为index的元素
lset list1 2 TOYOTA # lset key index value
linsert list1 before benz dazhong # linsert key BEFORE|AFTER pivot value
生产者、消费者模型--用rpush生产,放到列表尾部,用lpop消费,从列表头部取出元素,跟队列是一样的,先进先出;栈:后进先出(电梯)、先进后出.
d.set
set是string类型的无序集合.注意集合和列表的区别:
集合中的元素是无序的,因此不能通过索引来操作元素;
集合中的元素不能有重复.
SADD numbers 1 3 5 # sadd key member [ member .... ]
smembers numbers # smembers key返回集合中的所有元素
srem numbers 5 # srem key member
sismember key member# 判断元素是否在集合中
scard key # 获得集合中元素的个数
e.sorted set有序集合对象
zadd 命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在,则会用新的分数替换原有的分数
zadd key score member [ score member ...... ]
ZADD price 8.5 apple 5.0 banana 6.0 cherry
zscore key member # 获得元素的分数
zrange key start stop [ withscores ] # 获得排名在某个范围的元素列表
zrevrange key start stop [ withscores ]
zrange price 0 -1
2.两种模型
a.生产者、消费者模型
b.发布订阅模型
# 两个不同的终端,分别连上redis
10.0.0.15:6379> publish mq1 "redis is a great cached technique"
(integer) 1 10.0.0.15:6379> subscribe mq1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mq1"
3) (integer) 1
1) "message"
2) "mq1"
3) "redis is a great cached technique"
3.事务
10.0.0.15:6379> zadd money 3000 lixiang 6000 oldboy
(integer) 2
10.0.0.15:6379> multi
OK
10.0.0.15:6379> zincrby money 1000 lixiang
QUEUED
10.0.0.15:6379> zincrby money -1000 oldboy
QUEUED
10.0.0.15:6379> exec
1) "4000"
2) "5000"
10.0.0.15:6379> zrange money 0 -1 withscores
multi:标记一个事务块的开始;
exec:执行所有事务块内的命令;
discard:取消事务,放弃执行事务块内的所有命令;
watch:监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断;
unwatch:取消watch命令对所有 key 的监视.
Redis的事务中,启用的是乐观锁,只负责监测key没有被改动.
4.内部命令
INFO [section]:获取Redis服务器的各种信息和统计数值;
CONFIG SET parameter value:修改redis配置参数,无需重启;
MONITOR:实时打印出Redis服务器接收到的命令,调试用;
DBSIZE:返回当前数据库的key的数量;
FLUSHALL:删除所有数据库的所有key;
FLUSHDB:删除当前数据库的所有key; CLUSTER SLOTS:获取集群节点的映射数组;
CLIENT LIST:获取连接到服务器的客户端连接列表;
ROLE:返回主从实例所属的角色;
SAVE:异步保存数据到硬盘;
SHUTDOWN [NOSAVE] [SAVE]:异步保存数据到硬盘,并关闭服务器;
SLAVEOF host port:将当前服务器转变为指定服务器的从属服务器(slave server);
SYNC:用于复制功能(replication)的内部命令
SLOWLOG subcommand [argument]:管理 redis 的慢日志
cat redis.conf
slowlog-log-slower-than 10000
slowlog-max-len 128
Redis常用命令整理:https://www.cnblogs.com/kevinws/p/6281395.html
Redis数据类型、两种模型、事务、内部命令的更多相关文章
- Redis的两种持久化方式-快照持久化和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...
- redis的两种安装方法
原:https://www.cnblogs.com/caokai520/p/4409712.html C# Redis 概念 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦 ...
- Redis的五种数据结构的内部编码
type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串).hash(哈希). list(列表).set(集合).zset(有序集合),但这些只是Redis对外的数据结构. 实 ...
- Redis的两种持久化方式-快照持久化(RDB)和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为“持久化”效果. redis有两 ...
- Redis系列之----Redis的两种持久化机制(RDB和AOF)
Redis的两种持久化机制(RDB和AOF) 什么是持久化 Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望 ...
- Redis的两种持久化机制
Redis的两种持久化机制 1.持久化机制 client--->redis(内存)--->内存数据-数据持久化--->磁盘 两种方法 快照(Snapshot) AOF(Append ...
- Redis入门到高可用(四)—— Redis的五种数据结构的内部编码
Redis的五种数据结构的内部编码
- Redis系列(二):Redis的5种数据结构及其常用命令
上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...
- 详细讲解 Redis 的两种安装部署方式
Redis 是一款比较常用的 NoSQL 数据库,我们通常使用 Redis 来做缓存,这是一篇关于 Redis 安装的文章,所以不会涉及到 Redis 的高级特性和使用场景,Redis 能够兼容绝大部 ...
随机推荐
- 程序员必备PC维修法(硬件篇)
自检自修不是万能,但不会自检自修却万万不能.程序员修电脑还是有必要的. 情景:通电情况下,电脑主机无法启动,所有主机内部硬件无反应. 原因:1.CPU.主板.电源积尘.(出现率30%) 2.CPU.主 ...
- PC Server远程管理卡用户管理脚本实现
1.IPMI工作原理图: 2.脚本实现流程图: 3.适配服务器机型: 4.演示效果: 5.实现代码: #!/usr/bin/env bash # Author : JACK ZHAO # Date : ...
- isinstance()判断数据类型
判断数据类型isinstance()l=[1,2,3]print(isinstance(l,list))#括号里面第一个填需要判断的数据,第二个是判断条件
- (转)Unreal Shader模块(四): 着色器编译
本文为(转):Unreal 调试着色器编译过程 调试着色器编译过程 Rolando Caloca 在 April 19, 2016 | 学习编程 Share on Facebook Shar ...
- Thread 多线程 同步
当多个线程,访问同一个对象,调用同一个方法或访问同一个对象时.有时,必须保证访问的同步性.比如,一个银行信用卡账户具有5000元的信用额度.用户除具有一张主卡外,还办有多张子卡.这些卡的累计消费金额, ...
- VB.NET视频总结——基础篇
VB.NET视频是台湾讲师曹祖胜和林煌章共同带来的经典视频,视频中老师的台湾腔特别重,听起来有些别扭.而且对于计算机方面的术语翻译的与大陆有很大差异,所以刚开始看视频的时候总是进入不了状态,一头雾水的 ...
- Java中类的继承深入剖析
在Java开发中,我们常常用到继承这一概念,可以说继承是Java这类面向对象编程语言的基石.正是有了继承这个概念,使得我们可以创建分等级层次的类.今天小编就和大家一起来深入聊聊Java语言的继承. 在 ...
- [洛谷P4389]付公主的背包
题目大意:有$n(n\leqslant10^5)$种物品,第$i$个物品体积为$v_i$,都有$10^5$件.给定$m(m\leqslant10^5)$,对于$s\in [1,m]$,请你回答用这些商 ...
- [BZOJ3196] 二逼平衡树 [权值线段树套位置平衡树]
题面 洛咕题面 思路 没错我就是要不走寻常路! 看看那些外层位置数据结构,必须二分的,$O(n\log^3 n)$的做法吧! 看看那些cdq分治/树状数组套线段树的,空间$O(n\log^2 n)$挤 ...
- (poj)Sequence Median
Description Given a sequence of N nonnegative integers. Let's define the median of such sequence. If ...