安装
使用 homebrew 安装:brew install redis
To have launchd start redis now and restart at login: brew services start redis
Or, if you don‘t want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf
配置文件位置:/usr/local/etc/redis.conf
启动
redis-server
/ redis-server /usr/local/etc/redis.conf
redis-cli -h 127.0.0.1(ip) -p 6379(port)
redis-cli ping
127.0.0.1:6379> auth 123456(password)
127.0.0.1:6379> quit
redis-cli shutdown
(单实例关闭) redis-cli -p 6379 shutdown
(多实例关闭,指定端口 6379 关闭)常用命令
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
key
"object-type:id"
"comment:1234:reply.to" or "comment:1234:reply-to"
exist mykey
返回1或0表示数据库中是否存在给定的键del mykey
删除 key 和关联的 valuetype mykey
返回 key 对应的 value 的类型expire mykey 5
可以设置 key 的过期时间,默认单位为秒,set key 100 ex 10
可以在初始化的时候设置过期时间,可以使用 persist
删除过期时间,使用 ttl mykey
可以查看剩余过期时间字符串
set mykey somevalue
get mykey
getset
会设置新的 value 并返回旧的 valuemset
mget
可以批量进行 set 和 get 操作,mget
返回 value 数组set mykey newval nx
当 mykey not exist 时才 set 成功,set mykey newval xx
则与之相反set counter 100
incr counter
incrby counter 20
数值类可以做加减,类似的还有 decr
decrby
并且操作是原子性的链表
lpush mylist A
rpush mylist B
分别向链表的头部和尾部追加元素,lrange mylist 0 -1
列举了列表中所有的元素,相应的还有 rpop
和 lpop
lpush mylist 1 2 3 4 5
ltrim mylist 0 2
仅从索引0到2列出列表元素,其他所有内容都将被丢弃,没有 rtrim
brpop/blpop tasks 5
意思是 wait for elements in the list tasks, but return if after 5 seconds no element is available
, 返回值是包含两个元素的数组 (key, value),brpop list1 list2 0
其中 0 表示一直等待,并且该命令可以同时等待两个链表Redis 可以自动创建和删除 key
哈希
hmset user:1000 username antirez birthyear 1977 verified 1
,hmset
命令设置哈希的多个字段,而 hget
检索单个字段。hmget
类似于 hget
但返回值的数组。hincrby user:1000 birthyear 10
对单个字段执行加法操作,类似的还有 hincrbyfloat
,没有 hdecrby
无序集合
sadd myset 1 2 3
添加元素smembers myset
输出所有元素sismember myset 2
是否包含这个元素sinter set1 set2
输出两个集合的交集(intersection)sunionstore set1 set2
将两个集合的并集放入 set1
中scard set1
返回集合中目前的元素数,通常称为集合的基数srandmember myset
与 spop
类似,但是不会删除集合中的元素srandmember myset 4
,如果 set 元素数小于 4,则输出所有的元素不重复,如果大于 4,就输出 4 个srandmember myset -4
,不管元素有几个,都输出 4 个,并且结果可能会有重复有序集合
zadd myzset 40 val
zadd myzset 41 "val more"
向 set 中添加元素,立即排序 O(log(n)) 的复杂度zrange myzset 0 -1 withscores
zrevrange myzset 0 -1
顺序/倒序输出 set 中的元素,withscores
会返回 scorezrangebyscore myzset -inf 40
返回 score 在负无穷大和1950之间的所有元素(前闭后闭区间)zremrangebyscore myzset 30 40
删除区间内的元素,并返回删除的元素个数zrank myzset val
返回当前元素的下标zrangebylex hackers [B (P
表示 前闭后开 区间内的元素zadd
可以对排序集合随时更新位数组
setbit mykey offset value
offset
必须大于等于0,小于 2^32 (512MB) getbit mykey 20
bitop and/or/xor dest key1 key2 key3
bitop not dest key1
,执行填充计数,报告设置为1的位数:bitcount key1
,查找指定值为0或1的第一位:bitpos key1
HyperLogLogs
一种概率数据结构,用于对唯一的元素进行计数,得到的是近似值,误差小于1%
> pfadd hll a b c d
(integer) 1
> pfcount hll
(integer) 4
流
原文:https://www.cnblogs.com/leafs99/p/redis_learning_01.html