Redis-进阶2

Redis -常用的数据类型

常用数据类型有字符串、列表、Hash列表、集合和有序集合

(1)字符串string

set key value

get key

incr   自增1

incrby   key   number  指定数字自增

decr 自减1

decrby  key  number  指定数字自减

append  字符串追加

set name "navy"

append name "fengning"

同时设置多值mset和mget

补充:位操作

GETBIT

SETBIT  根据ASCII码进行设置

例如:

set foo  bar

get foo

GETBIT foo 0    把bar字符串每个字符转为ASCII码8位,取第一位

SETBIT foo 6   0   把第6位改为0

SETBIT foo 7 1 把第7位改为1

如果要设置的位置超过二进制位的长度,SETBIT命令会自动将中间的二进制位设置为0,同理设置一个不存在的键的指定二进制位的值会自动将其前面的位置赋值为0
例如:SETBIT nofoo 10 1
GETBIT nofoo 5 ===> 0
BITCOUNT命令可以获取字符串类型键中是1的二进制个数,例如:
BITCOUNT foo ==>10
同时可根据指定字符范围进行统计,例如
BITCOUNT foo 0 1 统计前2个字符
字符间交集、并集、异或等 使用BITOP命令
BITOP OR / AND/XOR/NOT
BITPOS foo 1 1 2 查看第2个字节与第3个字节之间出现第一个1的二进制位的偏移量

=============================================

 redis-hash散列数据类型

hset 与hmset

hget与hmget

例如:hmset  hash1 name navy age 30 work it

          hset  hash2  name navy

 hgetall  获取所有valude  hgetall hash1

hincrby   自增

hdel    key  name  删除

del  key    删除键

hsetnx   

设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSETNX myhash field1 "bar"

hexists key name   如果存在返回1,不返回0

hlen  key      查看key中有多少个field

hkeys  key  列出key中所有的keys

hvals   key  列出key中所有value

====================================

 redis-lis列表数据类型

list的顺序是按照左插入和右插入之分的插入的顺序不同,从左右获取的数据不相同
我们使用arraylist 使用数组的方式,命令前使用l
两端添加:添加value 可以1个或者多个
lpush和rpush
lpush key value
rpush key value
lpush key value1 value2 value3 value4 ......
rpush key value1 value2 value3 value4 ......
lrange key start stop #查看所有为,lrange famliy 0 -1
指定位置push
lset key index value 在列表中第几个位置插入
指定value值插入
linsert key before\after pivot value
在列表中,从左到右,第一个等于pivot这个值的前面或者后面,插入value

两端弹出
lpop 和rpop 删除列表最左边或最右边的value
rpoplpush source distination
从列表source 右边删除一个value 并加入到新的列表distination中
llen key 获取列表长度
lpushx key value 如果列表存在,从左侧插入,不存在返回0
rpushx key value 如果列表存在,从右侧插入,否则返回0
删除 指定值
lrem
lrem key count value
如果 count >0 从左侧删除count个等于value的值
如果 count <0 从右侧删除count个等于value的值
如果 count =0 从整个列表删除等于value的值
补充:
lindex number 0 返回列表中索引为0的值
lset number 1 7 通过索引赋值value
ltrim 命令删除指定索引范围之外的所有元素
ltrim keys 1 2 删除索引1-2之外的所有元素
案例:
LPUSH logs $NEWLOG 追加 日志
LTRIM logs2 0 99 日志只保留最近100条的

====================================================

 redis-集合数据类型

有序集合是带序号的
有序字符串集合 sorted 从小到大排序
zscore 获取有序集合中的某个元素的score值(score 值为序号)
zscore key member 获取有序集合中的某个元素的score值
zadd 和zrem 增加和删除
例如:
zadd zmyz 1433 xin 3306 mysql 1434 yu
查看整个有序集合 zrange zmyz 0 -1 而查看整个set集合 为 smembers key
zrange zmyz 0 2 withscores 从zmyz有序集合中找到0-2的3个元素并返回,及同事输出他们的scores
zragnebyscore key min max [withscores][limit offset count]
zragngebyscore key 1400 1500 查看score从1400到1500的预算
zrange与zrangebyscore区别在于,zrange 为根据索引进行获取,而zrangebyscore是根据scores值范围进行获取

zrangebyscore zmyz 1400 1500 withscores limit 1 1 返回scores 从1400到1500之间从第一位开始计算,包含1且等于1
zrangebyscore zmyz 1400 1500 withscores limit 1 3 返回scores 从1400到1500之间大于等于1及大于等于3
zrangebyscore zmyz 14000 1500 withscores limit 1 (3 包左不包右
zrangebyscore zmyz 1400 1500 withscores limit 1 +inf 到正无穷大 7

zadd zmyz score member score2 member2
zrem zmyz member member2 删除zmyz有序集合中的某个元素
zremrangebyscore zmyz min max 根据score范围进行删除

zincrby key increment member
例如:zincrby zmya 1000 yu zmyz中元素yu 的score值加1000
zcount key min max 统计有序集合zmyz中score范围内的元素的个数
小结:
增加元素和删除zadd 和zrem
获取元素:
zscore 获取score
zrange 根据元素获取具体信息
zrangebyscore genuinescore获取具体信息
zcard 统计元素数量
zcount key min max 之分score范围内,元素个数

=============

删除;
zrem key member
根据score删除 zremrangebyscore key min max
根据排名范围删除
zremrangebyrank key start stop 根据索引删除
zrank 获得元素的排名
zrevrank key member 根据元素排名反转排序
计算有序集合的交集:
ZINTERSTORE
zinterstore 交集参数受到AGGREGATE 限制
当为sum 时,得到的有序集合交集为元素分数sum结果
当为 min 时,得到的有序集合的交集为元素最小分数结果
当为max时,得到的有序集合的交集为元素最大分数的结果:

例如:
zadd scored 1 a 2 b
zadd scored2 10 a 20 b
zinterstore scored3 scored1 scored2 AGGREGATE sum
zrange scored3 0 -1 withscores
a 11
b 22
zinterstore scored3 scored1 scored2 AGGREGATE min
zrange scored3 0 -1 withscores
1 a
2 b

zinterstore scored3 scored1 scored2 AGGREGATE max
zrange scored3 0 -1 withscores
10 a
20 b
=============================

keys 的通用操作

同时可使用通配符进行模糊匹配
keys * 查看所有keys
keys my? 查看my开头后面只有1个字符的keys
keys my* 查看所有my开头的keys

删除多个key
del key [key.....]
exists key 是否存在,true为 ,false为0
rename key newkey 重命名
expire key seconds 设置生存周期
ttl key 查看生存周期剩余多少
type key 查看数据类型

    =======================

redis特性
redis 最多支持16个数据,下标从0-15开始
切换使用select dbnumber 切换数据库
使用move 移动key 从当前数据库到指定的数据库
multi 开启事务
exec 提交
discard 回滚 待验证

=

猜你喜欢

转载自www.cnblogs.com/navy880827/p/10628875.html