金空间网站,建站行业前景,平面设计软件图标图片,dw静态网页模板目录 常见的数据类型
一、String类型
1、简介
2、常用命令
#xff08;1#xff09;新建key
#xff08;2#xff09;设值取值
编辑
#xff08;3#xff09;批量操作
#xff08;4#xff09;递增递减
3、原子性操作
4、数据结构
二、list类型
1、list常…目录 常见的数据类型
一、String类型
1、简介
2、常用命令
1新建key
2设值取值
编辑
3批量操作
4递增递减
3、原子性操作
4、数据结构
二、list类型
1、list常用命令
2、数据结构
三、hash类型
1、常用命令
1给集合中放值 hset stu name lc
2取
3批量设置
4自增
5其他
2、数据结构
四、set类型
1、简介
2、常用命令
1存值
2取值
3判断是否有指定值
4scard 返回该集合的元素个数。
5两个集合差
3、数据结构
五、zset类型(Sorted set )
1、简介
2、常用命令
1将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
2返回key中的元素从低到高带withscores可以让分数一起和值返回到结果集
3查范围之间
3、数据结构 常见的数据类型
一、String类型
1、简介
String是Redis最基本的类型你可以理解成与Memcached一模一样的类型一个key对应一个value。
String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
String类型是Redis最基本的数据类型一个Redis中字符串value最多可以是512M
./redis-cli -a root --raw远程连接redis加--raw原始输出
2、常用命令
1新建key
set keyvalue添加键值对
示例 set k1 v1 *NX当数据库中key不存在时可以将key-value添加数据库*XX当数据库中key存在时可以将key-value添加数据库与NX参数互斥*EXkey的超时秒数*PXkey的超时毫秒数
NX当key已存在不能添加
XX不出在不能用覆盖原有的 EXEX后跟秒数超时后销毁
PXkey的超时毫秒数
、
2设值取值
setex key过期时间value#设置键值的同时设置过期时间单位秒。 setex key 80 val 等同与 set key val EX 80 setnx key value 不存在就插入not exists等同于 set key val NX 取值
get key查询对应键值
示例:get name 以新换旧设置了新值同时获得旧值 getset keyvalue 示例: getset name new_cxx #给 name 的 value 设置新值返回旧值 3批量操作
批量设置
mset key1 key2 批量设置key
msetnx key1value1key2value2 ..... 同时设置一个或多个 key-value 对当且 仅当所有给定 key 都不存在 如果有一个存在就会不成功。
注意有一个失败则都失败 批量获取 mget key1 key2 批量获取 setrange替换值从指定的下标开始替换
getrange 查指定的下表之间的值
setrange key起始位置indexvalue #从 index 开始替换 valuegetrange key起始位置结束位置 获得值的
strlen key 将给定的值 追加到原值的末尾
append keyvalue 4递增递减
incr key
将 key 中储存的数字值增1
只能对数字值操作如果为空新增值为1
示例:incr age decr key
将 key 中储存的数字值减1
只能对数字值操作如果为空新增值为-1
示例:decr age #递减 自设步长
incrby / decrby key步长将 key 中储存的数字值增减。自定义步长。
示例: incrby age 10 递增
示例: decrby age 10 递减 3、原子性操作
在多线程的环境下
当前执行的进程不会被其他的进程打断 原子性
原子性操作: redis
单线程
数据库中原子性 :全部成功/失败
4、数据结构 String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串内部结构实现上类似于Java的ArrayList采用预分配冗余空间的方式来减少内存的频繁分配. 内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时扩容都是加倍现有的空间2倍如果超过1M扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。
二、list类型
Redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边。
它的底层实际是个双向链表对两端的操作性能很高通过索引下标的操作中间的节点性能会较差。
1、list常用命令
rpush 右边开始添加 lpush 从左边开始添加 lrange key start end 从左边开始 0至-1代表取出所有 lpop/rpop key 从左边/右边吐出一个值 llen key获得列表长度
lindex key index lrem keynvalue 从左边删除n个对应的value值(从左到右)示例: lrem k3 3 test #从左边开始删除k3里面的3个“test”
lsetkeyindexvalue将列表key下标为index的值替换成value 2、数据结构
List的数据结构为快速链表quickList。
首先在列表元素较少的情况下会使用一块连续的内存存储这个结构是ziplist也即是压缩列表。
它将所有的元素紧挨着一起存储分配的是一块连续的内存。
当数据量比较多的时候才会改成quicklist。
因为普通的链表需要的附加指针空间太大会比较浪费空间。比如这个列表里存的只是int类型的数据结构上还需要两个额外的指针prev和next。 Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能又不会出现太大的空间冗余。
list存储各种列表,可以做消息队列。如粉丝列表主播列表消息列表等等
三、hash类型
hash是一个string类型的field和value的映射表hash特别适合用于存储对象。
1、常用命令
1给集合中放值 hset stu name lc
hset keyfieldvalue给key集合中的 field键赋值value 2取
hget key1field 从key1集合field取出 value 3批量设置
hmset key1field1value1field2value2... 批量设置hash的值
hget key field field field 4自增 hincrby stud age 5 5其他
hexistskey1field查看哈希表 key 中给定域 field 是否存在。 示例:hexists hhash username hkeys key列出该hash集合的所有field示例:hkeys hhash hvals key列出该hash集合的所有value示例:hvals hhash hsetnx keyfieldvalue将哈希表 key 中的域 field 的值设置为 value 当且仅当域 field 不存在 . 示例: hsetnx hhash id 100
2、数据结构
在Redis中Hash是一种数据结构用于存储键值对的集合其中键和值都是字符串类型。Hash在Redis中是一个字典可以存储多个键值对并且支持对其中的某个键进行单独的读写操作。
以下是Redis Hash的主要特点和操作 特点 存储键值对的集合。键和值都是字符串类型。适合存储对象或记录的字段和值。
四、set类型
1、简介
set对外提供的功能与list类似是一个列表的功能特殊之处在于set是可以自动排重的当你需要存储一个列表数据又不希望出现重复数据时set是一个很好的选择并且set提供了判断某个成员是否在一个set集合内的重要接口这个也是list所不能提供的。
2、常用命令
1存值
sadd se v1 v2 v3 v4
sadd keyvalue1value2 .....
将一个或多个 member 元素加入到集合 key 中已经存在的 member 元素将被忽略 2取值
smembers key取出该集合的所有值。 3判断是否有指定值
sismember keyvalue 判断集合key是否为含有该value值有1没有0 4scard key 返回该集合的元素个数。
5两个集合差
sdiff key1key2 返回两个集合的差集元素(key1中的不包含key2中的) 3、数据结构
Set数据结构是dict字典字典是用哈希表实现的。
Java中HashSet的内部实现使用的是HashMap只不过所有的value都指向同一个对象。Redis的set结构也是一样它的内部也使用hash结构所有的value都指向同一个内部值。
五、zset类型(Sorted set )
1、简介
Redis有序集合zset与普通集合set非常相似是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分score,这个评分score被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的但是评分可以是重复了 。
因为元素是有序的, 所以你也可以很快的根据评分score或者次序position来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。
2、常用命令
1将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zadd keyscore1value1score2value2… 2返回key中的元素从低到高带withscores可以让分数一起和值返回到结果集
zrange keystartstop [WITHSCORES] (从高到低) 3查范围之间
zrangebyscore key min max [withscores] [limit offset count]
返回有序集 key 中所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 示例:zrangebyscore tzset 3 4 limit 0 2zrevrangebyscore key max min [withscores] [limit offset count]
同上改为从大到小排列。
limit 0 2是把三行截成两行
3、数据结构
SortedSet(zset)是Redis提供的一个非常特别的数据结构一方面它等价于Java的数据结构MapString, Double可以给每一个元素value赋予一个权重score另一方面它又类似于TreeSet内部的元素会按照权重score进行排序可以得到每个元素的名次还可以通过score的范围来获取元素的列表。
zset底层使用了两个数据结构
1hashhash的作用就是关联元素value和权重score保障元素value的唯一性可以通过元素value找到相应的score值。
2跳跃表跳跃表的目的在于给元素value排序根据score的范围获取元素列表。
对比有序链表和跳跃表从链表中查询出51 类型 简介 特性 场景 String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M --- Hash(字典) 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性 List(列表) 链表(双向链表) 增删快,提供了操作某一段元素的API 1、最新消息排行等功能(比如朋友圈的时间线) 2、消息队列 Set(集合) 哈希表实现,元素不重复 1、添加、删除、查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 Sorted Set(有序集合) 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列