Redis五大数据类型以及常用命令
redis常用五大数据类型
String (字符串)、List(列表)、Hash(哈希表)、Set(无序集合)、Zset(有序集合)
redis数据库常见使用命令
- redis-server : redis服务器启动命令
- redis-cli : 客户端,操作入口
- select 【dbid】 : 切换数据库
- dbsize : 查看当前数据库key的数量
- flushdb : 清空当前库
- fliush : 通杀所有库
- keys * : 查看当前库所有key
- exists key : 查看key是否存在
- type key : 查看key是什么类型
- del key : 删除指定的key数据
- unlink key : 异步删除指定key
- expire key 10 : 为给定的key设置过期时间
- ttl key : 查看指定key还有多久过期 -1永不过期 -2已经过期
redis常见五大类型以及常用命令
Redis字符串-String
String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M
set/get/del/append/strlen
1.set---设置值 eg:set key value
2.get---获取值 eg:get key
3.mset---设置多个值 eg:mset name xyy age 18 height 180
3.mget---获取多个值 eg:mget name age height
4.setex---设置键值以及过期时间 eg:setex <key><过期时间><value>
5.del---删除 eg:del name
6.strlen---查看字符串长度 eg:strlen height
7.append---追加值到指定key后 eg:append key value
8.setnx---只有在 key 不存在时 设置 key 的值 eg:setnx <key> <value>
9.msetnx---同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
eg:msetnx <key1><value1><key2><value2> ....
incr/decr/incrby/decrby
1.incr---每次自增1 eg:incr age
2.decr---每次自减1 eg:decr age
3.incrby---自定义自增多少 eg:incrby age 5
4.decrby---自定义自减多少 eg:decrby age 5
getrange/setrange
1.getrange ---- 获取指定区间范围内的值,类似between....and的关系
2.setrange ---- 代表从第几位开始替换,下脚本从零开始
3.getrange key 0 -1 ---从0 -1表示获取全部
Redis列表-List
单键多值
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头 部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节 点性能会较差
lpush/rpush/lpop/rpop/lrange/rpoplpush
lpush ---- 从左边插入数据 lpush a1 1 2 3 4 5 倒序排列
rpush ---- 从右边插入数据 rpush a2 1 2 3 4 5 正序排列
lpop ---- 移除最左元素 lpop a1 删除元素5
rpop ---- 移除最右元素 rpop a1 删除元素1
lrange ---- 获取指定长度 lrange a1 0 -1 获取a1 中的所有值
rpoplpush s1 s2 ---- 将s1中最后一个压入s2中第一位
lindex/llen/lrem key/ltrim key
lindex ---- 按照索引获取元素 lindex a1 2 获取元素3
llen ---- 获取列表长度 llen l1 获取列表l1长度
lrem a1 2 1---删N个value 在a1中删除2个1
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim a1 0 2 截取l1从0到2的数据重新赋值给a1,a1中数据改变
lset key index value
lset s1 0 x ---- 将s1中第一位换成x
linsert key before/after
linsert s1 before x python 在x之前加字段python
linsert s1 after x java 在x之前加字段java
Redis集合-Set
list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的
Redis 的 Set 是 string 类型的无序集合。它底层其实是一个 value 为 null 的 hash 表,所以添加,删除,查找的复杂度都是 O(1)。
sadd/smembers/sismember
sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3 自动去掉重复
smembers set01 得到set01
sismember set01 1 如果存在返回1 不存在返回0
scard
scard ---- 获取集合里面的元素个数
scard set01
srem key value
srem ---- 删除集合中元素
srem set01 3 ---- 删除set01中的3
srandmember key(原来集合不变)
srandmembe ---- 随机选出几个数
sadd set02 1 2 3 4 5 6 7 8
srandmember set02 2 ---- 随机选出两个数且原来集合不变
spop key(原来集合发生变化)
spop ---- 随机出栈
spop set01
smove key1 key2
sadd set03 x y z
smove set01 set03 2 将set01中的2 移动到set03中
集合类
sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02 返回 4 5
交集
SINTER set01 set02 返回 1 2 3
并集
SUNION set01 set02 返回set01 set02 中的值
Redis哈希表-Hash
Redis hash 是一个键值对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象.
通过 key(用户 ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数 据,也不会带来序列化和并发修改控制的问题
hset/hget/hmset/hmget/hgetall/hdel
设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11 ---- 设置值
hget user id ---- 获取值
hmset anb id 11 name xyy age 18 ---- 设置多个值
hmget anb id name age ---- 获取多个值,只返回相应的值
hgetall anb ---- 返回全部值
hdel anb id ---- 删除id
hlen
hlen anb ---- 求哈希长度
hexists key
hexists name ---- 确定key中是否存在某个值
存在返回1 ,不存在返回0
hkeys/hvals
hkeys anb ---- 获取所有的键
hvals anb ---- 获取所有的值
Redis有序集合-Zset
Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用 来按照从最低分到最高分的方式排序集合中的成员。
集合的成员是唯一的,但是评分可以是重复了 。
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获 取一个范围的元素。 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成 员的智能列表
zadd/zrange
zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 ---- 返回集合中所有值
zrangebyscore key start end
zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70
zrangebyscore zset01 60 (90 表示不包含90
zrangebyscore zset01 60 90 limit 1 2 从第一条开始截取2条
zrem key
zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1 ----- 删除zset01中的v1
zcard/zcount key score 区间/zrank key values
zcard 求zset01元素总数
zcount zset01 60 90 求60-90中间的元素个数
zrank zset01 v2 返回1 返回对应下角标,从0开始
redis其他命令
标签:---,set01,数据类型,eg,Redis,----,key,常用命令 From: https://www.cnblogs.com/wangqingcui/p/17464499.html