Redis基本命令整理

#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 key

#hashes类型

####创建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 hash

#lists类型

 链表结构,主要功能是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 list

#sets类型 集合,和数学的集合概念相似,有交并差等操作(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 set

#Sorted 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 score2

#Redis常用命令

键值相关命令

####返回满足给定的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.虚拟内存的使用

转载于:https://my.oschina.net/qiegao/blog/786057

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值