<Redis> 入门二 五种数据类型的操作、通用key的操作、发布订阅
文档参考:http://www.redis.net.cn/
string - > key value 简单的keyvalue,常规计数:例如微博数,粉丝数
set -> key value1 value2... 去重,所以保存用户的所有关注,粉丝。通过交集并集差集,可以实现共同关注,共同爱好等
sortedset -> key score1 value1 score2 value2 排行榜,代权重的消息队列
hash -> map [key1,value1 key2,value2...] 存对象,例如用户信息
list -> 队列key value1 ..value2...value3.. 做分布式消息队列,最新消息排行
1.String 类型
重复会覆盖之前的key值
一个字符类型的key默认存储最大容量是512M
set key value 设置指定的key,value值
get key 获取指定的key值
getrange key start end 返回key中包含头尾的子字符串
getset key value 设置指定的key,value 返回旧的value,如果没有旧value,返回(nil),并设置key value
setex key second value 设置key,value,并指定过期时间,单位为秒
psetex key milliseconds value 设置key,value,并指定过期时间,单位为毫秒
setnx key value 只有当不存在key时,才能设置成功
strlen key 返回字符串的长度
incr key 给key存储的数值加1,有原子性
incrby key increment 给key存储的数值指定加increment
incrbyfloat key increment 给key存储的数值指定加浮点类型
decr num 给key存储的数值减一
decrby num decrement 给key存储的数值减decrement
append key value 给key后追加字符
del key 删除key
mget key1[key2] 获取多个键的值,可以减少网络传输
mset key value[key value] 可以设置多个键值
2.hash类型
字段名重复会覆盖之前的field的值
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
适合存储对象
person:
name:zhangsan
age:18
sex:男
hset key field value 设置哈希key中的field的值为value,可以设置多个
hget key field 获取哈希key中的field对应的value值
hgetall key 获取哈希key中所有的键值对
hexists key field 判断哈希key中对应的字段是否存在
hdel key field 删除key中指定的字段
hincrby key field increment 给指定的哈希的字段数字增加increment
hincrbyfloat key field increment 给指定的哈希的字段数字增加浮点increment
hkeys key 获取哈希key中的所有字段
hlen key 获取哈希key中字段的个数
hvals key 获取hash表中所有字段对应的值
hsetnx key field value 只有当field字段不存在,设置哈希表字段的值
3.list类型
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
允许重复元素
可以实现分部式消息队列
lpush key value 将值插入列表头部,key是列表名,value是指
rpush key value 将值插入列表尾部
lrange key start stop 查询列表中的值,0 -1 表示所有
lpushx key value 向已存在的列表头部添加值
rpushx key value 向已存在的列表尾部添加至
lpop key 弹出左边第一个元素,并返回元素值
rpop key 弹出右边第一个元素,并返回元素值
llen key 获取列表长度
blpop key timeout 移除第一个元素,直到等待超时,或发现弹出为止
brpop key timeout 移除最后一个元素,直到等待超时,或发现弹出为止
4.set类型
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
sadd key value[value...] 向key集合中添加多个元素,如果存在,则会忽略存在的值,并返回成功加入的元素个数
scard key 获取key集合中元素个数
sdiff key1 [key2] 返回两个集合的差集
sdiffstore destination key1[key2] 将两个集合的差集存储到目标集合destination中
smembers key 返回集合中的所有成员
sinter key1 [key2] 返回两个集合的交集
sinter destination key1 [key2] 返回两个集合的交集并存储到目标集合
sunion key1[key2] 将所有集合的并集显示出来
sunionstore destination key1[key2] 将所有集合的并集返回到destination中
sismember key value 判断value是不是key中的元素
spop key count 随机移除集合中的元素,count代表个数,返回移除的元素
.
srandmember key count 返回集合中count个随机值
srem key value[value] 移除集合中一个元素或多个元素
5.sortedSet类型
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
zadd key score1 member1[score2 member2] 向key集合添加分数和成员
zcard key 查看key集合中有几个元素
zrange key start end withscores 显示集合中start 到 end 集合并且显示分数
zcount key min max 计算集合元素中指定区间分数的成员数
zscore key value 返回指定成员的分数值
zrem key value 移除key集合中的指定成员
6.key 通用命令
keys * 查看所有的键
type key 获取键对应的类型
del key 删除指定的key
rename key newkey 修改key的名字
exists key 检查key是否存在
expire key seconds 给key设置过期时间,单位是秒
ttl key 查看还多少秒过期,-1为持久化
pttl key 查看还多久过期,单位毫秒
persist 去掉过期时间,持久化
move key bd 将当前的key移动到指定的数据库
发布订阅
publish channal message
subscribe channel [...]
<Redis> 入门二 五种数据类型的操作、通用key的操作、发布订阅的更多相关文章
- 【Redis】一、Redis简介及五种数据类型
(一)Redis简介 Redis(Remote Dictionary Server)是一个使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value的开源 ...
- Redis支持的五种数据类型
redis支持的五种数据类型: 1.string(字符串) 2.hash(哈希) Redis hash 是一个键值(key=>value)对集合. Redis hash是一个string类型的f ...
- Redis学习笔记(3)—— 五种数据类型&keys的通用操作
一.Redis数据结构介绍 redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点: 1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低 ...
- 《闲扯Redis一》五种数据类型之String型
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- Redis安装及五种数据类型
redis是非关系型数据库,也叫内存数据库.数据是键值对的形式,通过key查找value 安装Radis:6379 sudo apt-get update sudo apt-get install r ...
- Redis学习笔记--五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- redis的入门篇---五种数据类型及基本操作
查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...
- 《闲扯Redis三》Redis五种数据类型之List型
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...
- Redis五种数据类型应用场景
目录 1.1 回顾 2.1 应用场景 2.1.1 String 2.1.2 Hash 2.1.3 List 2.1.4 Zet 2.1.5 zset 3.1 小结 1.1 回顾 Redis的五种数据类 ...
随机推荐
- 06_传智播客iOS视频教程_源文件后缀名和main函数
OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...
- P3755 [CQOI2017]老C的任务
传送门 可以离线,把询问拆成四个,然后把所有的按\(x\)坐标排序,这样就只要考虑\(y\)坐标了.然后把\(y\)坐标离散化,用树状数组统计即可 记得开longlong //minamoto #in ...
- 文件系统访问控制ACL设置
1.传统Linux文件系统权限的问题 传统Linux文件系统有三类用户:文件属主-u,组用户-g,其它用户-o,以及三种访问权限:读-r,写-w,执行或目录进入-x,但很多时候并不能满足对文件访问的细 ...
- Golang bash脚本自动创建一个go工程
原作者的代码里面,存在智能引号问题,所以他的代码并不能正常运行: 这个是我微调后的版本. 代码如下: #!/bin/bash #————————————– # Module : mk_go_pro.s ...
- Spring 中 ApplicationContext 和 BeanFactory 的区别
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...
- 进击的Python【第十章】:Python的高级应用(多进程,进程间通信,协程与异步,牛逼的IO多路复用)
Python的socket高级应用(多进程,协程与异步) 一.多进程multiprocessing multiprocessing is a package that supports spawnin ...
- _bzoj1010 [HNOI2008]玩具装箱toy【斜率优化dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1010 裸的斜率优化,第一次写队首维护的时候犯了个智障错误,队首维护就是维护队首,我怎么会那队 ...
- 奇葩问题: lsattr -d /data 显示:----------I--e- /data/
奇葩问题 lsattr -d /data 显示:----------I--e- /data/ 问题影响: 其他权限中I(大写i) 目录下不能删除文件,不能添加文件 ================== ...
- commons-lang常用工具类StringEscapeUtils使用--转
https://my.oschina.net/ydsakyclguozi/blog/341496 在apache commons-lang(2.3以上版本)中为我们提供了一个方便做转义的工具类,主要是 ...
- 5 月编程语言排行榜:Java第一,R跌出Top20
我们都知道,最近,TIOBE 发布了 5 月份编程语言排行榜.其中,前三名依然健稳不变,他们分别是 Java.C.C++,第四则为: Python ,第五则为 VB .NET. 下面两张图,我们可以看 ...