Redis简介
Redis是一个开源的key-value存储系统,和Memcached类似,它支持更多的value类型,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希)。他们都支持pop()、push()以及add()或remove(),并且这些操作都是原子的。另外,Redis支持各种各样的排序。为了保证效率,Redis也是将数据缓存在内存中,并且提供了持久化机制RDB和AOF,并且也实现了主从复制。Redis默认16个数据库,下标从0开始(默认使用)。Redis所有的库拥有统一的密码管理,都是相同的。Redis是单线程+多路IO复用技术实现。
string相关
string是Redis最基本的数据类型,一个key对应一个value。
string可以包含任何数据,比如图片,序列化对象,因为他是二进制安全的。
string中的一个字符串value最多可以是512M。
set key value 添加
get key value 获取
del key 删除
keys * 查看所有键
append key value 追加值
strlen key 返回长度
incr/decr key 自增自减、值为整形
incrby/decrby key 步长 增加或减少指定长度
getrange key 0 -1 获取全部
getrange key 0 3 获取0到3的字符串
setrange key 0 xxx 将key从0开始设置连续xxx进行覆盖
setex key 10 value 添加字符串同时设定过期时间
ttl key 查看key剩余过期时间
setnx key value key不存在添加该值
mset k1 v1 k2 v2 k3 v3 同时添加多个指
mget k1 k2 k3 同时获取多个值
getset key value 先获取再设置
List相关
单键多值。
Redis列表是一个简单的字符串列表,按照插入的顺序,你可以添加在头部或者尾部。
底层维护了一个双向列表,通过索引操作中间的节点性能较差,但操作两端节点性能较好。
lpush 从列表左侧头部添加数据
rpush 从右侧尾部添加数据
lpop 从给左侧头部取出一个元素
rpop 从右侧尾部取出一个元素
lrange 取出指定范围的元素
Lrem 删除列表指定元素
lindex 获取第几个坐标下的值
llen 获取列表的长度
lset 修改坐标小的值
Linsert 指定位置添加元素
set相关
set与list类似,但是set是自动排重的,当你不希望列表数据出现重复数据时,可以选择set。
set是一个string类型的无序集合,它的底层实现是一个value为null的哈希表,所以比较高效,添加、删除的复杂度都是O(1)。
sadd key member1 [member2] 向集合添加一个或多个成员
scard key 获取集合的成员数
sdiff key1 [key2] 返回给定所有集合的差集
sdiffstore destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
sinter key1 [key2] 返回给定所有集合的交集
sinterstore destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
sismember key member 判断 member 元素是否是集合 key 的成员
smembers key 返回集合中的所有成员
smove source destination member 将 member 元素从 source 集合移动到 destination 集合
spop key 移除并返回集合中的一个随机元素
srandmember key [count] 返回集合中一个或多个随机数
srem key member1 [member2] 移除集合中一个或多个成员
sunion key1 [key2] 返回所有给定集合的并集
sunionstore destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
sscan key cursor [match pattern] [count count] 迭代集合中的元素
zset相关
没有重复的字符串集合。
每个成员关联一个评分,zset会根据评分进行排序。
元素不可重复,评分可以重复。
zadd 添加一个元素和他的属性值,可以一次添加多个
zscore 根据元素查他的属性值
zcard 返回所有集合的个数
zcount 取在这个属性范围内元素的个数
zrange 偏移取值,取start与end中的值,依据属性,可添加
zrevrange 递减排序
zrank 返回元素排名
zrevrank 返回元素排名
zrangebylex 范围查询
zlexcount 属性相同的集合,返回取值
zrem 删除1个或者多个成员
zremrangebyrank 删除指定排名区间的元素
zremrangebyscore 区间删除,依据属性值
zremrangebylex 属性值相同的集合,偏移删除
hash相关
hash是一个键值对集合。
hash适合存储对象。
类似于Java当中的Map<string ,string >
hset user id 向 user(map) 中添加 key-value 对(id,1)
hget user i 获取 user 中的 id 所对应的值:
hmset user name zhangsan sex man 设置多个 key-value 对:
hmget user name sex 获取多个 key:
hgetall user 获取 user 中的所有 key-value 对:
hdel user sex 删除 map 中的 key为sex的键值对:
hlen user 获取 user 中的 key-value 对的个数:
hexists user id 判断 user 中是否包含 id(包含:1,不包含:0):
hkeys user 返回 user 中所有的 key:
hvals user 返回 user 中所有的 values
hincrby user id 4 给 user 中的 id 加 4(必须是数字):
hincrbyfloat user id 2.3 hincrbyfloat 可以加浮点数:
hsetnx user id 2 如果 id 不存在才设置,否则失败:
做个总结,用起来方便~~