前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis拾遗 原

redis拾遗 原

作者头像
尚浩宇
发布2018-08-17 10:34:38
1K0
发布2018-08-17 10:34:38
举报
文章被收录于专栏:杂烩

    自己边学边记录的,写在了excel里,这里直接沾出来,懒得美化加工了。

基础篇

命令

说明

redis命令是原子性的

键值类型数据

redis范围都是左开右开

set

设置值,如set s 1

范围若左0,右-1为全部

get

获取值,如get s

任意key的值都可用type判断类型

incr

让某个数值类型的key自增1,如incr s

del

删除某个key,多key空格间隔,如del s b

keys

查找某个(些)key,如keys s

select

选择数据库,默认0,如:select 2

incrby

按给定的数字递增,如incrby s 6

decr

递减1,如,如decr s

decrby

按给定的给定参数递减,如decrby s 5

incrbyfloat

按给定的参数进行浮点数递增,如incrbyfloat s 2.7

append

向键值的末尾追加value并返回追加后的长度,若不存则则新建,如append s a

strlen

获取字符串的长度,如strlen s

mget

同时获取多个key的值,如mget bat ss

mset

同时设置多个key,如mset key1 val1 key2 val2

getbit

获取字符串类型键指定位置的二进制位的值

setbit

设置字符串类型键指定位置的二进制位的值

bitcount

获取字符串键值是1的二进制位个数

bitop

对多个字符串类型键进行位操作

散列数据

hset

散列数据,如hset obj1 id 1

hget

散列数据,如hget obj1 id

hmset

批量设置散列数据,如hmset obj1 id 1 name 张安 age 18

hmget

批量获取散列数据,如hmget obj1 id name age

hmgetall

获取散列数据全部属性,如hgetall obj1

hexists

判断散列数据某列是否存在,如hexists obj2 age

hsetnx

设置散列数据某列值,先判断,若已存在不进行任何操作,若不存在插入数据,如hsetnx obj2 age 23

hincrby

增加某列数据,如hincrby obj2 age 1

hdel

删除某列属性,如hdel obj2 age

hkeys

获取散列数据的字段名集合,如hkeys obj2

hvals

获取散列数据的值集合,如hvals obj2

hlen

获取字段数量,如hlen obj2

列表类型

lpush

向列表左边增加元素,返回添加后的长度,多个以空格隔开,如lpush num 1

rpush

向列表右边增加元素,返回添加后的长度,多个以空格隔开,如rpush num 1

lpop

向左边弹出第一个数据,如lpop num

rpop

向右边弹出第一个数据,如rpop num

llen

获取列表元素的个数,如llen num

lrange

截取,正数从左边开始,负数从右边开始,如lrange num 1 3

lrem

删除前count值为value的元素,count>0从左边删,county<0,从右边删,count=0,全部删除如,lrem num count value

lindex

返回指定index位置的元素,>=0左边开始,<0右边开始,如lindex num 0

lset

替换指定index位置的元素,如,lset num 0 1

ltrim

删除指定范围外的所有数据,如ltrim num 1 3

linsert

向某个元素前(后)插入元素,如,linsert num after 1 3、linsert num before 1 3、

rpoplpush

从一个列表右边弹出一个数据,插入到另一个列表的左边,如rpoplpush num num2

集合类型

sadd

添加集合元素,如:sadd set a

srem

删除元素,如:srem set a

smembers

获取集合所有元素,如smembers set

sismember

判断元素是否在集合中,如sismember set a

sdiff

集合差集(相对于第一个参数的差集),如sdiff set set2

sinter

集合交集,如sinter set set2

sunion

集合并集,如sunion set set2

scard

获取集合中元素个数,如:scard set

sdiffstore

对集合进行差集运算并将结果存储(其他如sinterstore、suinonstore),如:

srandmember

随机获得集合中的元素,,若后面跟上数值,如果数值大于0,则取数值个不重复的元素,若为负数,则取数值个元素,但可能是重复的,如:srandmember set

spop

从集合中随机弹出一个元素,如spop set

有序集合类型

zadd

添加元素,如zadd array 89 tom

zscore

获取元素的分数,如:zscore array tom

zrange

按分数从小到大获取在某个范围的元素列表,下标从0开始,-1代表最后一个元素,如zrang array 0 10 若要同时获取分数,在命令最后加上withscores

zrevrange

按分数从大到小获取在某个范围的元素列表,下标从0开始,-1代表最后一个元素,如zrang array 0 10 若要同时获取分数,在命令最后加上withscores

zrangebyscore

获取指定分数范围内从小到大顺序的元素,如zrangebyscore array 50 90,若要同时获取分数,在命令最后加上withscores,若要分页查询,在命令后加limit,用法同sql中的limit一样

zrevrangebyscore

获取指定分数范围内从大到小顺序的元素,如zrangebyscore array 50 90,若要同时获取分数,在命令最后加上withscores,若要分页查询,在命令后加limit,用法同sql中的limit一样,此命令参数第一个参数是最大值,第二个参数是最小值

zincrby

增加某个元素的分数(在原基础上增加),若值为负数则是减分,如:zincrby array 70 tom

zcard

获取集合中元素个数,如:zcard array

zcount

获取指定分数范围内的元素个数,如:zcount array 50 90

zrem

删除一个或者多个元素,zrem array tom

zremrangebyrank

按照排名范围(从小到大)删除元素,如:zremrangebyrank array 0 2

zremrangebyscore

按照分数范围删除元素,如:zremrangebyscore array 4 5

zrank

获得元素的排名,如:zrank array tom

zinterstore

计算交集并将结果存储到一个新的key里,如:zinterstore newkey 2 array1 array2,2是取多少个key,对新集合中每个元素对比原来的值是根据参数aggregate判断的(sum、max、min),另外可设置集合的权重weights 1 0.1;同样的命令还有差集,并集

进阶篇

事物

基本命令:     multi命令开头,正常一组命令结束后输入exec提交事物 错误处理:     1、2.6.5之前会处理正确的命令,忽略错误的命令,之后只要有错误命令不管是对还是错都忽略     2、运行错误不会忽略也不会回滚(redis不支持回滚) watch:     监控一个或多个key,一旦有一个key或者多个key的值被修改,之后的事物就不会执行。取消监控就是unwatch,另外事物的exec会取消掉对所有键的监控

时效

基本命令:     expire key seconds  设置以秒为单位的时效     expire key millions 设置以毫秒为单位的时效     ttl key  查看key的有效期还有多长时间单位秒     persist key 取消key的时效限制 注意:     同一个key第一次赋值的时候设置时效,第二次set的时候会清楚时效设置

缓存

当用redis做缓存时:     1、修改配置文件maxmemory属性,以防内存溢出,当达到maxmemory时会按属性maxmemory-policy指定的策略进行淘汰数据。        maxmemory-policy:            volatile-lru:针对设置时效的数据,删除最近最少使用的key            allkeys-lru:删除最近最少使用的key            volatile-random:针对设置时效的数据,随机删除key            allkeys-random:随机删除key            volatile-ttl:删除过期时间最近的一个键            noeviction:不删除键,只返回错误 注意:     不管那种策略,redis都是随机从所有数据里抽取三个key,然后比较再删除,并不是针对所有的key,这个3是默认值,可在配置文件中的maxmemory-samples属性配置

排序

基本命令:     sort key   key可以是集合类型也可以是列表和有序集合     sort key by key*->列名 desc/asc 按照key*键中的列名的值排序,*是拿key中的值进行替换,遍历所有的值在进行排序     sort key by key*->列名 desc get key*->title 按照key*键中的列名的值排序,*是拿key中的值进行替换,遍历所有的值在进行排序,然后返回所有匹配参考键key*的key的title属性     sort key store newkey   将结果保存到一个新的key里,适用于by、get之后 注意:     sort命令最后可以加上排序类型,desc倒序,asc正序     sort命令还可以加上limit,用法和mysaql一致(左闭右开)     sort不支持散列表类型     使用by的时候,如果参考键没有*,redis不会进行排序     使用by或get若参考键位置是字符串类型,不用写->     一个sort里可以有多个get,但只能有一个by     get #返回元素本身 优化:     尽量减少待排序键中元素数量     使用limit只获取需要的数据     如果要排序的数据量比较大,尽可能使用store缓存结果

队列

基本命令:     brpop key seconds 阻塞弹出,若没有则阻塞,只要seconds时间过期返回nil,若seconds为0则永久阻塞直到新任务取出     blpop key [key……] seconds 阻塞弹出,若没有则阻塞,只要seconds时间过期返回nil,若seconds为0则永久阻塞直到新任务取出,可以阻塞很多队列,

发布/订阅

基本命令:     publish channel message 向channel频道发送message信息     subscribe channel 订阅频道     unsubscribe channel 取消订阅频道     psubscribe channel 按规则订阅频道,channel可用匹配规则

持久化(适用于服务器重启)

RDB方式:自动持久化(异步):     在配置文件里进行配置,save 900 1 意思是15分钟内有一个或1个以上就进行持久化,可以有多个save,之间是或的关系 save或bgsave命令:     save,阻塞所有来自客户端的请求进行持久化     bgsave,异步进行持久化,可用lastsave命令查看进度(返回时间戳) flushall命令:     将所有数据持久化到硬盘,并清除所有内存中的数据,注意,只要save的条件不为空,无论什么条件,执行flushall都会进行持久化 aof方式:修改配置文件,      appendfilename appendonly.aof         appendonly yes

主从复制

主库不用任何操作,从库启动时额外加上启动参数slaveof 主库地址 主库端口

哨兵

功能:监控redis是否正常运行,当出现故障时,自动切换从库为主库 使用:     建立一个配置文件sentinel.cof,内容为sentinel monitor mymaster 127.0.0.1 6379 1,最后的1代表最低通过票数     执行命令redis-sentinel 刚刚配置文件路径 注意:配置文件只需要监控主库即可,他会自动发现所有的从库

集群

使用:      在配置文件里将cluster-enabled属性改成yes,并启动redis      配置环境依赖,ruby、gem的redis,然后运行一下命令进行初始化:redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385,注意1代表每个主库拥有的从库数量为1      命令执行时会提示输入yes,输入yes继续 注意:集群中至少要有3个主库才能正常运行       集群节点添加,只需要在任意集群中的客户端输入一下命令:cluster meet ip port即可       重新分片时使用如下命令:redis-trib.rb reshared 127.0.0.1:6380,接着会询问迁移多少插槽,从哪迁移,迁移到哪。最后输入done即可 常用命令:     cluster slots 查看插槽分配     cluster nodes 查看所有节点信息     info cluster  判断集群是否正常使用

管理篇

bind

绑定ip,使指定ip的主机才能连接

密码

在配置文件里配置requirepass属性,注意这里可用穷举法破解,使用命令时需要先用auth 密码认证

命令命名

在配置文件里使用rename-command属性对命令进行重命名

管理工具

redis-cli:    redis自带命令终端 phpredisadmin:    php语言客户端

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/10/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档