Redis---数据类型

五大数据类型

key操作

.....bin/redis-cli                连接Redis
keys *                            查看当前库所有key
exists key                        判断某个key是否存在
type key                          查看你的key是什么类型
del key                           删除指定的key数据
unlink key                        根据value选择非阻塞删除
                                  仅将keys从keyspace元数据中删除,真正删除会在后续异步操作
expire key 10                     10秒钟:给给定的key设置过期时间
ttl key                           查看还有多少秒过期,-1表示永不过期、-2表示已过期
select  数字                       命令切换数据库,0-15,一共16个数据库,从零开始
dbsize                            查看当前数据库key的数量
flushdb                           清空当前库
flushall                          通杀全部库

string类型

        一个Redis中字符串value最多可以是512M
         key中存储的是value
       -----------------------简单动态字符串
       
set                    添加键值对,可以覆盖原有的键值对
get                           查询对应的键值
append                 将给定的追加到原值末尾
strlen                        获取值得长度
setnx                  只有在key不存在时,设置key值,存在时不能覆盖、替换
incr                          将key中存储的数字值增1(value)
                                   只能对数字值操作,如果为空,新增值为1
decr                          将key中存储的数字值减1
                                   只能对数字值操作,如果为空,新增值为-1
incrby/decrby <步长>          将key中存储的数字值增减。自定义步长 
                               --- 是原子操作,不会被线程调度机制打断的操作
mset ........
                                   同时设置一个和多个key-value对
mget ......      同时获取一个和多个value
msetnx ......         
                                  同时设置一个和多个key-value对,当且仅当所有给定的key都不存在
getrange <起始位置><结束位置>
                                  获得值的范围,类似于substring
setrange <起始位置>覆写所存储的字符串值,从<起始位置>开始(索引从0开始)
setex <过期时间>       设置键值的同时,设置过期时间,单位秒  
getset                以新换旧,设置了新值同时获得旧值

Redis列表—list

   单键多值
   双向链表,存值按照链表特点, 先进后出,后进先出
   将链表和压缩链表ziplist结合起来形成quicklist
   
lpush/rpush ......    从左边/右边插入一个或多值
lpop/rpop                                  从左边/右边吐出一个值。**值在键在,值光键亡**
rpoplpush 列表右边吐出一个值,插入到左边
lrange                        按照索引下标获得元素(从左到右)
                                                 **0到-1代表所有值**
lindex                              按照索引下标获取单个元素(从左到右)
llen                                       获取列表长度
linsert  before 的前面插入插入值
linsert  after 的后面插入插入值
lrem                             从左边删除n个value(从左到右)
lset                         将列表key下标为index的值替换为value       

Redis集合—set

   自动排重的
   无序的集合,底层是hash表。所有value都指向同一个内部值 ,复杂度是1
   
sadd    
                                   将一个 或多个member元素加入到集合key中
                                   已经存在的member元素将被忽略
smembers                      取出该集合所有值
sismember              判断集合是否含有该值,有1,没有0,
scard                         换回该集合元素个数 
srem .        删除集合中元素
spop                          随机从该集合中吐出一个值
srandmember                随机从集合中取出n个值,不会从集合中删除
smove           把value从第一个集合中移动到另一个集合中
                                   如果另一个集合中存在该元素,不作添加操作、
sinter                返回两个集合交集元素
sunion                返回两个集合并集元素
sdiff                 返回两个集合差集元素(key1中的,不包含key2中的)

Redis—哈希(hash)

数据类型有两种:短---ziplist(压缩列表),长---hashtable(哈希表)

hest 集合中的键赋值
hget 集合取出value
hmst ...    批量设置hash值
hexists                查看哈希表key中,给定域field是否存在
hkeys                          列出该hash集合中所有field
hvals                          列出该hash集合中所有的value
hincrby      为哈希表key中的域field的值加上增量increment
hsetnxbn         将哈希表中的域field的值设置为value
                                    当且仅当域field不存在

Redis有序集合zset

  Redis有序集合zset与普通集合set相似,没有重复元素的字符串集合
 每个成员都关联了一个评分(score),集合成员是唯一的,但是评分可以重复了
 评分(score)被用来从低到高排序集合中成员

 zadd ...
                       将一个或多个member元素及其score值加入到有序集合key当中
 zrange [WITHSCORES] 
                       返回有序集合key中,下标在之间的元素
                       带WITHSCORES,可以让分数一起和值返回到结果集
 zrangebyscore    [WITHSCORES] [limit offset count]
                       返回有序集合key中,所有的score值介min和max之间(包括min或max)的成员
                       有序集成员按score值递增(从小到大)次序排列,
 zrevrangbyscore    [WITHSCORES] [limit offset count]
                       同上,从大到小 排列
 zincrby     为元素的score加上增量increment
 zrem                  删除该集合下,指定值元素
 zcount             统计该集合,分数区间内的元素个数
 zrank                 返回该值在集合中的排名,从0开始

发布与订阅

Redis发布订阅(PUB/SUB)是一种消息通信模式:发送者(PUB)发送消息,订阅者(sub)接收消息
Redis客户端可以订阅任意数量的频道

Redis---数据类型_第1张图片

Redis---数据类型_第2张图片
1,打开一个客户端订阅 channel1
SUBSCRIBE chadnel1u

2.打开另一个客户端,给channel1发布消息hellov
publish channell hellor

3.打开第一个客户端可以看到发送的消息。

你可能感兴趣的:(Redis,redis)