热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis基本命令整理

strings类型设值设单个值setkeyvalue如果不存在,设一个值setnxkeyvaluenx:notexists设置过期时间(expiredtime)setexkey[n
strings类型

设值

设单个值

set key value

如果不存在,设一个值

setnx key value
//nx: not exists

设置过期时间(expired time)

setex key [number] value
//number为有效期,有效期过后,值为nil

把number索引后面替换为value

setrange key [number] value

设置多个值

mset key1 value1 key2 value2 …

批量设值

msetnx key1 value1 key2 value2 …
//设值全部成功或全部回滚

取值

get key

设置key值,并返回key的旧值

getset key value

获取指定区间的子字符串

getrange key number1 number2

批量获取key值,不存在的返回nil

mget key1 key2 key3 …

值操作

自增1

incr key

增加指定值

incrby key number

自减1

decr key

减去指定值

decry key number

拼接字符

append key value

取key的value长度

strlen keyhashes类型

创建hash数据结构,指定key值为value

hset hash_name key value

如果不存在,设置新值

hsetnx hash key value

批量设定hash的多个field

hmset hash key1 value1 key2 value2 …

获取hash指定的key值

hget hash key

获取指定的全部key值

hmget hash key1 key2 …

给指定的hash field加上定值number

hincrby hash key number

指定的field是否存在

hexists hash key

获取指定的hash的field数量

hlen hash

移除指定的field

hdel hash key

返回所有key值

hkeys hash

返回所有value值

hvals hash

返回所有key value

hgetall hashlists类型

链表结构,主要功能是push pop,获取范围内的值
分非阻塞版本(默认)、阻塞版本

list左侧(或称头部)添加值value

lpush list value

list右侧(或称尾部)添加值value

rpush list value

在key对应list的位置之前/之后插入元素value

linsert list before/after key value

设置list中指定下标元素值

lset list index value

从list中删除count个value值

lrem list count value

保留指定区间的值

ltrim list index1 index2

弹出顶部元素并返回该值

lpop list

同上,底部

rpop list

弹出list1底部元素,并添加到list2头部,返回该值

rpoplpush list1 list2

返回value在list中的索引

lindex list value

返回list长度

llen listsets类型

集合,和数学的集合概念相似,有交并差等操作(union、intersection、difference)
无序string类型集合,由hashtable实现,复杂度O(1)

添加set值

sadd set value

移除set中的值value

srem set value

随机移除set的value并返回

spop set

差集

sdiff set1 set2

返回set1于set2的差集(即set1中不存在于set2中的value的集合)
sdiff set1 set2的结果 不等于 sdiff set2 set1的结果

将set1 set2的差集存储到set3中

sdiffstore set3 set1 set2

返回set1 set2的交集

sinter set1 set2

将交集存储到set3

sinterstore set3 set1 set2

并集

sunion set1 set2

将并集存储到set3

sunionstore set3 set1 set2

将value从set1移动到set2

smove set1 set2 value

返回set中元素数量

scard set

判断value是否是set中元素

sismember set value

随机获取set值

srandmember setSorted sets类型 : zset

set基础上添加了顺序属性,zset会按新的值调整顺序,可以理解为有两列的数据库表,一列为value,一列为排序数值。
zset每个元素会关联一个double类型的score。
sorted set是skip list和hash table的混合体

在索引位置添加值value

zadd zest index value

移除value

zrem zest value

自增

zincrby zset number value

如果value存在于zset中,其score值增加number
如果value不存在,在zset中增加value,其score值为number

获取序列编号

zrank zset value

返回value在zset中的序列(按score升序排列),即索引(下标)

获取反向序列编号

zrevrank zset value

返回value在zset中的序列(按score降序排列),即索引(下标)

获取反向序列编号

zrevrange zset index1 index2 [withscores]

将zset按照score值降序排列,区间为index1至index2,with scores控制是否显示score值
(测试不通过)

返回给定socre区间元素数量

zcount zset score1 score2

返回给定的value的score值

zscore zset value

移除给定的索引区间的元素

zremrangebyrank zset index1 index2

移除给定的score区间的元素

zremrangebyscore zset score1 score2Redis常用命令

键值相关命令

返回满足给定的pattern的所有key,如keys , keys mylist

keys [pattern]

确认一个key是否存在

exists key

移除一个key

del key

设置过期时间

expire key number

给key设置一个过期时间number,单位秒,ttl key显示剩余时间,过期后值为-2

设置永不过期

persist key

将expire过程中的key持久化,变成不会不过期状态,持久化之后,执行ttl key值为-1

重命名key

rename key new_name

返回key的数据类型

type key

将key移动到其他库

move key schema服务器命令

测试连接是否存活,如果是,返回PONG

ping

打印内容

echo string

选择数据库,编号0-15

select number

退出连接

quit

返回当前数据库key的数目

dbsize

获取服务器信息和统计

info

获取服务器配置信息

config get attribute

查看全部配置

config get *

清空当前数据库

flushdb

清空所有库

flushall高级实用特性

1.安全性,设置密码

2.主从复制

master可以有多个slave,slave还可以连接到其他slave。
主从复制不会阻塞master,在数据同步时,master可以继续处理client请求。

3.事务控制

开启事务

multi

执行事务,提交

exec

事务回滚

discard

注意:redis 部分事务失败,不会回滚全部事务

乐观锁

watch key

4.持久化机制

快照方式 snapshotting

(1)自动保存快照
配置信息:

save 900 1 #如果900秒内超过1个key被修改,则发起快照保存
save 300 10 #如果300秒内超过1个key被修改,则发起快照保存
save 60 10000 …

过程:

1. redis调用fork,为主进程(父进程)创建一个子进程
2. 父进程继续处理client请求,子进程将内存内容写入临时文件。子进程地址空间内的数据是fork时的整个数据库的快照。子进程不会影响父进程处理client请求。
3.当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件,然后子进程退出。

(2)save / bgsave

手动保存快照,在主线程中完成快照保存,会阻塞所有的client请求。
每次都是将内存数据完整的写入到磁盘,如果数据量大,会引起大量的IO操作,影响性能。

Append-only file方式

记录每次write的操作内容
比快照方式更好

5.发布及订阅消息pub/sub

订阅tv1

client1: subscribe tv1

订阅tv2

client2: subscribe tv1 tv2

发布tv1消息,client1 client2收到消息

client3: publish tv1 program1

发布tv2消息,client2收到消息

client3:publish tv2 program2

批量订阅tv开头的频道内容

psubscribe tv*

6.Pipeline批量发送请求

可以将多个命令放到一个tcp报文一起发送、返回。

7.虚拟内存的使用


推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文提供了关于数据库设计的建议和注意事项,包括字段类型选择、命名规则、日期的加入、索引的使用、主键的选择、NULL处理、网络带宽消耗的减少、事务粒度的控制等方面的建议。同时还介绍了使用Window Functions进行数据处理的方法。通过遵循这些建议,可以提高数据库的性能和可维护性。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
author-avatar
总会有办法的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有