Redis学习笔记整理——基础

作为一个大四的菜鸟学习了半年,目前发现的redis的门道还挺多,仅限我目前了解的知识范围,特来开启一个文章类目,来记录redis的一些使用方法。主要是总结梳理知识,记录笔记来用。

Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

一:String(字符串)

 string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

 string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

 string类型是Redis最基本的数据类型,一个键最大能存储512MB。

字符常见操作指令
get key 获取
set key value 设置
getset key value 先获取后设置,得到的是原来的值,之后再get这个key则获得新设置的value。
del key 删除
incr key[int] 值加一;若无key,创建并设置初值为0、再加一
decr key[int] 值减一;若无key,创建并设置初值为0、再减一
incrby key[int] value  值加value;若无key,创建并设置初值为0、再加value
decrby key[int] value  值减value;若无key,创建并设置初值为0、再减value
append key value       key[value]后追加字符串,若无key,创建并设置初值value

二:Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

每个 hash 可以存储 232 -1 键值对(40多亿)。

哈希操作指令:
hset  [hashname] [key] [value] 设置单值
hmset [hashname] [key1] [value1] [key1] [value1]..... 设置多值
hget  [hashname] [key] 获取单值
hmget  [hashname] [key1] [key2] 获取多值
hgetall [hashname] 获取所有值
hdel    [hashname] [key1] [key2].... 删除多值
del     [hashname]  删除所有值 
hincrby   [hashname] [key] [value]  值增加
hexists   [hashname]  [key]  判断字段是否存在  1,存在  0,不存在
hlen   [hashname]  获取有几个字段
hkeys   [hashname]  获取所有字段
hvals    [hashname]  获取所有字段的值

三:List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
存储list操作指令:
lpush   [listname] [value1] [value2]....列表左端加入值
lpushx   [listname] [value1] [value2]....列表[listname]存在、则在左端加入值
rpush   [listname] [value1] [value2]....列表右端加入值
rpushx   [listname] [value1] [value2]....列表[listname]存在、则在右端加入值
lrange  [listname] [start]  [stop]  获取区间内的值
lpop  [listname] 弹出最左端值
rpop  [listname] 弹出最右端值
llen [listname] 获取列表长度
lrem [listname] [count] [value] 删除count个指定值,
count=0删除所有,count>0从左至右删除count个值,count<0从右至左删除count个值
lset [listname] [index] [value] 设置相应index的值 0:第一个,-1:最后一个
linsert [listname] [before/after] [keyvalue] [value] 在第一个[keyvalue]的[之前/之后]插入[value]
rpoplpush [listname1] [listname2] 将[listname1]最右端的值弹出压入[listname2]最左端 

*Redis链表经常用于消息队列的一些服务,来完成多个程序之间的消息的交互。
生产消费模型

四:Set(集合)

Redis的Set是string类型的无序集合,不允许出现重复元素。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

set常见操作指令:
向集合中添加元素:
sadd key value[value1 value2 value3]
例子:sadd myset 1 2 3 4 5 6
移除元素:
srem key value
例子:srem myset 1 //删除为1的myset的记录数
smembers key 查看记录数:
查询集合中的某个元素是否存在:
sismember key value //判断集合中的某个元素是否存在,1表示存在 0表示不存在
例子:sismember myset 2
返回所有元素的差集:
sadd myset a b c
sadd myset1 a c 1 2
sdiff myset myset1 //sdiff两个集合之间的差集表示
最后的结果是:b //两者之间没有相同的元素的就只有B元素而已的了
sinter myset mysest1 //sinter 表示的是两者之间的元素的交集
最后的结果就是:a c
sunion myset myset1 //sunion表示是两者元素之间的并集,相同的元素合并,不同的全部集合起来
最后的运行的结果:a b c 1 2
集合之间的个数:
scard key
例子:scard myset
把两个集合中不同的元素放置到另外一个集合的元素上:
格式:sdiffstore key 集合1 集合2
例子:sdiffstore my1 myset myset1
*使用场景:  1、跟踪数据的唯一性
    2、用于维护对象之间的关联关系

五:Zset(有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

sort-set
zadd key 70(分数) value 80(分数)ls //添加元素
zadd key 90(分数)ls //这个时候不会添加元素 ,会把分数为80的替换掉
zadd key 60(分数)tom //这个时候会添加元素成功
zscore key  value  //获取到分数
zcard key // 获取数量
zrem key value1 value2 ....//删除相应的值
zrange key 0 -1 //获取key值
zrange key 0 -1 withscores//获取key值和分数
zrevrange key 0 -1 withscores//从大到小的排序
zremrangebyrank key 0 4//表示 按范范围删除
zremrangebyscore key 80 100 //表示 从80-100分的分数删除掉
zrangebyscore key 0 100 withscores //表示0到100的分数显示
zrangebyscore key 0 100 withscores limit 0 2//只显示2条
zcount key 80 90//显示80 到90分的个数


自己写的总是很辣鸡,还是文档上的好:英语好的直接去官网,英语辣鸡的就去中文网站: redis.cn
数据类型和常见的操作指令就是以上这些了!开启下一步








你可能感兴趣的:(redis学习笔记)