Redis 基本操作
Redis 基本操作
参考:An introduction to Redis data types and abstractions
中文翻译:看云
Redis命令查询:Command Reference - Redis
Strings
# set and get
set key value # set value
get key# multiple operation
mset key1 value1 [key2 value2...] # multiple set
mget key1 [key2...] # multiple get# string operation
getrange key start end # get sub string
setrange key offset value # rewrite from specific offset
strlen key # get string length
append key value # append value to existing value(returns added value length)# bit operation
setbit key offset value # set bit value by offset
getbit key offset # get bit value by offset# expires
setex key expire # create a key with expire
set key ex expire # creat a key with expire
psetex key expire # expires after milie-seconds# if exists
setex key value # set if exists
setnx key value # set if not exits(returns 1 on success, 0 on failed)
set key value nx # set if not exits(return OK on success, (nil) on failed)# change self
incr key # increment on value
incrby key increment # increment on value by increment
incrbyfloat key increment # increment on value by float increment
decr key # same
decrby key decrement # same
getset # get set(can be used to count without omit)
Lists
#other
llen key # list length# push
lpush key ele1 [ele2 ...] # push to the left(one by one)
rpush key ele1 [ele2 ...] # push to the right(one by one)
lpushx key value # push if exists
rpushx key value # push if exists# pop(get and remove)
rpop mylist # pop one from the right, return null if empty
lpop mylist # same# get
lindex index # get value by index
lrange key start end # get element[a, b], [-2,-1] # remove
lrem key value count # default 0 remove all, <0 remove from tail# Block pop (如果有多个client在wait, 先wait的client先被服务.)
brpop key1 [key2 ...] timeout # block until new element(0 wait forever)
blpop key1 [key2 ....] timeout # block until new element(0 wait forever)# pop and push
rpoplpush source desti # rpop from source, lpsuh to desti
brpoplpush source desti # same but blocking# slice
ltrim key start end # only keep elements in [start, end]
List的常用案例:
- 记忆用户最近的更新。
- 进程间通信。使用生产者消费者模型。
rpoplpush/brpoplpush用法:
- Reliable queue (消费者取得数据后可能因为某种原因未完成)
- Circular list(sour和desti相同, 逐个遍历列表而非使用lrange一次取出所有元素, 在有多个client同时遍历,或者在遍历过程中加入新的元素时,都能依次遍历,此外,由于原子性操作,不会在丢失过程中丢失数据)
Hashes
# set
hset key filed value # hash set
hmset key filed1 value1 [field2 value2 ...] # hash multiple set
hsetnx key field value # set field if the filed not exists# delete
hdel key filed1 [field2 ...] # delete multiple fields from hash# other
hlen key # get the # of fields
hscan key cursor [pattern] [count] # similar to scan, but in hashes
hstrlen key filed # get length of value of field
hexists key filed # check existance# get
hget key filed # get one filed
hmget key filed1 [filed2 ...] # get multiple field
hgetall key # get all fields with values
hkeys key # get all fields
hvals key # get all values# change value
hincrby key filed increment # hash increment
hincrebyfloat key field increment # hash increment by float
Note:
- 尽管hash非常适合用于表示对象,但我们也可以将hash用在别的地方(因为hash里面的内容是没有限制的)
- 小哈希(例如,一些拥有小值的元素)在内存中以特殊的方式编码存储,以让内存存储变得更有效
Redis Sets
# get size (or cardinality 基数、集合的势)
scard key# add
sadd key value1 [value2 ...] # add multple values to set# get
smembers key # get all elements of set
srandmember key # randomly get one member# check existance
sismenber key value # check existence# pop
spop key # **randomly** pop one element# UNION
sunionstore res key1 [key2 ...] # get union of sets and store result
Redis Sorted sets
# add
zadd key score1 mem1 [score2 mem2] # add multiple elements# get by rank
zrange key start end [withscores] # get a range of elements
zrerange key start end [withscores] # reverse order# operate on ranges
zrangebysore key min max # get all between min and max
zremrangebyscore key min max # remove all between min and max# get rank
zrank key value # get rank
zrerank key value # reverse order# lexicographical scores(字典序操作)
(可以用于自动完成)
zrangebylex
zrevrangebylex
zremrangebylex
zlexcount
Note: 重复调用zadd可以更新元素的score(可用于游戏排行榜)
Bitmaps
# operations
setbit key offset val # set bit
getbit key offset # get bit
bitop [and/or/xor/not] dest key1 [key2...] # bit operate and store to dest
bitcount
bitpos key [start end] # find the first bit of 0 or 1
可用于记录网站用户每日访问情况。
HyperLogLogs
一种类似set的数据结构,用于估计set的大小(更快地)。
对Key自身的操作(无关乎数据和数据类类型)
type key # get key type
del key # delete key
exists key # check existance
expire key # set an expire for a key
pexpire key # set an expire in millis for a key
persist key # remove expire for a key
ttl key # time to live
pttl key # time to live in milliseconds
遍历keys
keys # 一次返回所有的key(当keys特别多时应采用scan)
scan # 逐个遍历key (可以模糊匹配)
转载于:https://www.cnblogs.com/fondoger/p/redis-basic-usage.html
Redis 基本操作相关推荐
- Redis基本操作——队列 List(原理篇)
2019独角兽企业重金招聘Python工程师标准>>> Redis基本操作--List(原理篇) 学习过数据结构的同学,一定对链表(Linked List)十分的熟悉.相信我们自己也 ...
- Redis基本操作进阶篇学习--排序
Redis基本操作进阶篇学习--排序 有序集合 SORT命令 常用参数介绍 针对数字元素进行排序 针对非数字元素排序 按范围获取排序结果 基于参考键进行排序 保存排序结果 注意事项 有序集合 Redi ...
- redis入门(一):redis基本操作
redis已经成为了主流的内存数据库,如果你正在寻找可靠的内存数据库的话,redis是一个很不错的选择. 如果你之前有接触过内存数据就会了解大部分的内存数据库都是以key-value的形式存在的,一个 ...
- redis基本操作和在springboot中的使用
本文介绍redis的使用 redis启动步骤 说明 redis自增自减相关操作 redis string set操作 get操作 其他操作 redis hash set操作 get操作 其他操作 re ...
- Redis 基本操作一
操作相关的命令连接 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsave:返回上次成功将数据 ...
- Redis基本操作练习
概述 auth password 127.0.0.1:6380> help authAUTH passwordsummary: Authenticate to the serversince: ...
- redis基本操作与Java连接
基本信息与操作 redis支持5种基本数据类型:字符串.哈希表.有序列表.无序集合和有序集合. 字符串 最典型的数据结构,以KV方式存储: > set iamkey iamvalue > ...
- memcached redis基本操作
memcached 安装与连接 使用docker进行启动:docker run -p 11211:11211 -d --name memcached memcached 使用telnet 进行连接:t ...
- Redis基本操作python篇
Redis 关系型数据库(sql): MySQL, Oracle, SQLite, SQL Server, ... 非关系型数据库(nosql: not only sql 不仅仅是SQL): Redi ...
最新文章
- csv格式用什么打开可以编辑_如何用EXCEL/WPS整理航信版(金税盘/白盘)客户(商品)编码表...
- 周立功-成功心法(2):通过讲故事营销自己
- oracle 数据库日常巡检:数据库基本状况、oracle资源使用、数据备份结果、性能、cpu等、数据安全、归档日志、会话、SGA/PGA使用情况
- 服务器版的mysql怎么装_WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)...
- 介绍一个基于 .NET 的船的新 PHP SDK + Runtime: PeachPie
- python 定时任务系统_Python定时任务,实现自动化的方法
- php中session总结,PHP5中Session总结(一)
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- java.sql.SQLException: Access denied for user ‘root‘@‘hadoop001‘ (using password: YES)
- .net5 不支持winform_.NET 5.0 RC 2 发布,正式版将在11月.NET Conf大会上发布
- 问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)
- 教程-脚本之Python
- 解决github访问慢
- MySQL数据类型详解
- 玉柴spn码故障对照表_玉柴共轨电喷发动机故障码一览表
- 计算机网络:第四章 网络层
- 牛逼!这个C++跳棋游戏居然可以让你边玩游戏边学编程!
- 日期组装 (如:2020年1月1日、二〇二〇年一月一日、1/1/2020)
- 计算机连接网络被限制,电脑本地连接受限制或无连接怎么办?
- java处理excel,将xlsx转xls