redis基础

来源:互联网 发布:淘宝全球购店铺申请 编辑:程序博客网 时间:2024/05/17 22:39
Redis
字符串 string set get
set key value 设置指定键的值
get key 获取指定键的值
getrange key start end 获取存储在键上的字符串的子字符串
getset key value 设置键的字符串值并返回其旧值
getbit key offset 返回键处存储的字符串中偏移处的位值
mget key1 [key2..] 获取所有给定键的值
setbit key offset value 存储在键上的字符串中设置或清除偏移处的位
setex key seconds value 使用键和到期时间来设置值
setnx key value 设置键的值,仅当键不存在时
setrange key offset value 在指定偏移处开始的键处覆盖字符串的一部分
strlen key 获取存储在键中的值的长度
mset key value[key value] 为多个键分别设置他们的值
msetnx key value[key value] 为多个键分别设置他们的值,仅当键不存在时
psetex key milliseconds value 设置键的值和到期时间
incr key 将键的整数值增加1
incrby key increment 将键的整数值按给定的数值增加
incrbyfloat key increment 将键的浮点值按给定的数值增加
decr key 将键的整数值减1
decrby key decrement 按给定数值减少键的整数值
append key value 将指定值附加到键




散列/哈希 hash hmset hgetall 
hdel key field1[field2] 删除一个或多个哈希字段
hexists key field 判断是否存在散列字段
hget key field 获取存储在指定键的哈希字段的值
hgetall key 获取存储在指定键的哈希中的所有字段和值
hincrby key field increment 将哈希字段的整数值按给定数字增加
hincrbyfloat key field increment 将哈希字段的浮点值按给定数值增加
hkeys key 获取哈希中的所有字段
hlen key 获取散列中的字段数量
hmget key field1[field2] 获取所有给定哈希字段的值
hmset key field1 value1[field2 value2] 为多个哈希字段分别设置他们的值
hset key field value 设置散列字段的字符串值
hsetnx key field value 仅当字段不存在时,才设置散列字段的值
hvals key 获取哈希中的所有值


列表 lpush  lrange key start stop
集合  zset sadd list smembers list 集合中值是唯一的
可排序集合 set  zadd list score value  zrange list strat stop zrangebyscore list min max

优点:快,支持丰富的数据类型,操作具有原子性,多使用工具

del key 删除一个指定键
dump key 返回存储在指定键的值的序列化版本
exists key 检查键是否存在
expire key seconds 设置键在指定时间秒数之后到期/过期
expireat key timestamp 设置在指定时间戳之后键到期/过期。
pexpire key milliseconds 设置键的到期时间
pexpireat key mulliseconds-timestamp 设置到期时间
keys pattern 查找与指定模式匹配的所有键
move key db 将键移动到另一个数据库
persist key 删除指定键的过期时间
randomkey 从redis返回一个随机的键
pename key newkey 更改键的名称
pttl key 获取键到期的剩余时间 以毫秒为单位
renamenx key newkey 如果键不存在,重命名键
type key 返回存储在键中的数据类型


Redis支持数据库
默认支持16个数据库,不支持自定义数据库的名字,每个数据库都以编号命名,也不支持
为每个数据库设置不同的访问密码,所有一个客户端要么可以访问全部数据库,要么连一个数据库也没有
权限访问。多个数据库之间并不是完全隔离的。


Redis基础
Redis热身
1、获取符合规则的键名列表 KEYS pattern
? 匹配一个字符
* 匹配任意个(包括0个)字符
[] 匹配括号间的任一字符,可以使用“-”符号表示一个范围
\x 匹配字符x,用于转义符号
2、判断是否存在键 EXISTS key(如果存在返回整数类型1,否则返回0)
3、删除键 DEL key
linux管道 redis-cli KEYS "user:*" | xargs redis-cli DEL
redis-cli DEL 'redis-cli KEYS "user:*"'
4、获取键值的数据类型 Type key
string hash list set zset
字符串类型
一个字符串键允许存储的数据最大容量是512MB
1、赋值与取值
SET key value
GET key (键不存在时返回nil)
2、递增数字(当存储的字符串是整数形式的,INCR作用是让当前键值递增,并返回递增的值)
INCR key
实践
键的命名:对象类型:对象ID:对象属性
生成自增ID
对于每一个对象使用名为对象类型(复数类型):count的键来存储当前类型对象的数量,每增加
一个新对象时都使用INCR命令递增该键的值。
存储文档数据
通过序列化字符串或者存储二进制数据(MessagePack)
补充
1、增加指定的整数
INCRBY key increment
2、减少指定的整数
DECR key DECRBY key increment
3、增加指定浮点数
INCRBYFLOAT key increment
4、向尾部追加至 APPEND key value
向键值的末尾追加value,如果键不存在则将该键的值设置为value
5、获取字符串长度 STRLEN key
如果键不存在则返回0,UTF-8长度为3
6、同时获得/设置多个键值 
MGET key [key...]
MSET key value[key value ...]
7、位操作
GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end] 获得字符串类型键中值是1的二进制位个数
BITOP operation destkey key [key ...] AND OR XOR NOT
散列类型hash
介绍
散列类型的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,
不支持其它数据类型。
适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
命令
1、赋值与取值
HSET key field value
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HGETALL key
HSET执行时插入操作返回1,更新操作返回0,键不存在时创建。
2、判断字段是否存在 HEXISTS key field
如果存在返回1,否则返回0(键不存在也返回0)。
3、当字段不存在时赋值 HSETNX key field value
如果字段已经存在,HSETNX命令不执行任何操作
4、增加数字 HINCRBY key field increment
散列类型没有HINCR命令,通过HINCRBY key field 1实现
5、删除字段 HDEL key field [field...]
HDEL命令可以删除一个或多个字段,返回值是被删除的字段个数。
实践
补充
1、只获取字段名或字段值
HKEYS key
HVALS key
2、获取字段数量 HLEN key
列表类型
介绍
双向链表实现。通过索引反问元素比较慢。
命令
1、向列表两端增加元素
LPUSH key value [value ...] 向列表左边增加元素,返回值表示增加元素后列表的长度
RPUSH key value [value ...] 同左边增加元素
2、从列表两端弹出元素
LPOP key 将列表左边的元素从列表中移除,返回被移除的元素值
RPOP key
3、获取列表中元素的个数 LLEN key
4、获取列表片段 LRANGE key start top
选取包括最右边的元素,-1表示列表最右边元素
5、删除列表中指定的值 LREM key count value
删除列表中前count个值为value的元素,返回值是实际删除的元素个数。
实践
1、存储文章ID列表
2、存储评论列表
补充
1、获取/设置指定索引的元素值
LINDEX key index
LSET key index value
2、只保留列表指定片段
LTRIM key start end
删除指定索引范围之外的所有元素
3、向列表中插入元素
LINSERT key BEFORE|AFTER pivot value
首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER
来决定将value插入到该元素的前面还是后面。返回值是插入列表的元素个数。
4、将元素从一个列表转到另一个列表
RPOPLPUSH source destination
集合类型
介绍
命令
1、增加/删除元素 不存在重复元素
SADD key member [member ...] 添加
SREM key member [member ...] 删除
2、获得集合中的所有元素
SMEMBERS key 
3、判断元素是否在集合中
SISMEMBER key member
4、集合间运算
SDIFF key [key ...]
SINTER key [key ...]
SUNION key [key ...]
SDIFF 用来对多个集合执行差集运算。
SINTER 用来对多个集合执行交集运算。
SUNION 用来对多个集合执行并集运算。
实践
补充
1、获取集合中元素个数
SCARD key
2、进行集合运算并将结果存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
3、随机获得集合中的元素
SRANDMEMBER 用来随机从集合中获取一个元素
4、从集合中弹出一个元素
SPOP key
有序集合类型
命令
1、增加元素
ZADD key score member [score member]
2、获取元素分数
ZSCORE key member
3、获取排名在某个返回的元素列表
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key  start stop [WITHSCORES]
4、获取指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
5、增加某个元素的分数
ZINCREBY key increment member
补充
1、获取集合中元素的数量
ZCARD key
2、获取指定分数范围内的元素个数
ZCOUNT key min max
3、删除一个或多个元素
ZREM key member [member ...]
4、按照排名范围删除元素
ZREMRANGEBYRANK key start stop
5、按照分数范围删除元素
ZREMRANGEBYSCORE key min max
6、获得元素的排名
ZRANK key member
ZREVRANK key member
7、计算有序集合的交集
ZINTERSTORE destination numkeys key [key ..] [WEIGHTS weight [ weight ..]] [AGGREGATE SUM|MIN|MAX]

事物
MULTI--表示开始事务
EXEC--表示执行事务
Redis的事务没有回滚功能。
WATCH 可以监控一个或多个键,一旦其中有一个键被修改,之后的事务就不会执行
set key 1
watch key 
set key 2--由于修改了key的值,所以事务不执行
multi
set key 3
exec 
由于exec命令返回值是多行字符串类型,所以代码中使用result[0]来获取第一个值
过期时间
EXPIRE 设置键的过期时间,到时见后Redis会自动删除
EXPIRE key seconds seconds参数表示过期时间,单位是秒
TTL key 返回键的剩余时间,当键不存在时TTL命令会返回-2,没有设置过期时间返回-1
PERSIST key 过期时间被成功清除则返回1;否则返回0
使用set为键值赋值也会清除键的过期时间
PEXPIRE与EXPIRE一样只是过期时间单位是毫秒
如果使用WATCH命令监测一个拥有过期时间的键,该键时间到期自动删除并不会被WATCH命令认为该键被改变。
排序
SORT key ASC|DESC LIMIT start end
BY 参考键 (表示为键名->字段)




发布订阅
PUBLISH channel message 发布消息
SUBSCRIBE channel [channel ...] 订阅频道
UNSUBSCRIBE channel [channel ...] 取消订阅频道
订阅后的消息回复:
1、subscribe 表示订阅成功的反馈信息。第二个值是订阅成功的频道名称,第三个值是当前客户端订阅的频道数量。
2、message 表示接收到的消息,第二个值表示产生消息的频道名称,第三个值是消息的内容。
3、unsubscribe 表示成功取消订阅某个频道,第二个值是对应的频道名称,第三个是当前客户端订阅的频道数量
















































































原创粉丝点击