04 Redis 数据类型 & 常见命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxdeng/article/details/86524331

Redis支持五种数据类型

  • string (字符串)
  • hash (哈希)
  • list (列表)
  • set (集合)
  • zset (sorted set:有序集合)

注意 key 不要太长,最好不要超过1024字节,可以也不要太短,最好统一命名规范;

1. String(字符串)

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
常见命令

# 赋值
set key value
#范例
set usernmae 大乔

# 取值
get key
# 范例
get username

# 取值赋值(先取值,然后在修改对应key的值)
getset key value
#范例
getset username 小乔

# 删除值
del key
# 范例
del username


# 数值递增一(对应值不存在默认0在加一,如果存在一个字符串就报错)
incr key
# 范例
incr num

# 数值递减(递减一,值不存在默认0在减一)
decr key
#范例
decr num

# 将指定的value 增加指定的值(值不存在就默认是0,值是字符串就报错)
incrby key value
#范例
incrby num 5


# 将指定的value 减指定的值(值不存在就默认是0,值是字符串就报错)
decrby key value
#范例
decrby num 10

# 字符串拼接(存在就拼接,不存在就创建)
append key value
#范例
append name aaa

set key value 是在Redis 中存储一个值;get key 获取对应key 的值。多个相同key 最后一个key会将前面的覆盖掉。

注意:一个键最大能存储512MB

2. Hash (哈希)

Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>

# 赋值
hset key field value
#范例
hset myhash username tom
hset myhash age 18

# 取值
hget key field
# 范例
hget myhash age
# 一次取多个值
hget myhash username age
#获取属性和属性值
hgetall myhash

# 删除
hdel key field
# 范例(返回0 表示值在hash中不存在)
hdel myhash age

# 删除整个集合
del key
# 范例
del myhash

# 给Hash中数字类型的值进行增加操作
hincrby key field value
# 范例
hincrby myhash age 10   # 给myhash集合中的age 值加10

# 判断指定中key中某个属性是否存在,存在返回1
hexists key field
# 范例
hexista myhash password

# 获取指定key中所有的属性和值
hgetall key 
# 范例
hgetall myhash

# 获取指定key中所有的属性
hkeys key
# 范例
hkeys myhash

# 获取指定key中所哟的值
hvals key
# 范例
hvals myhash

# 获取指定key的长度
hlen key
# 范例
hlen myhash

注意:每个 hash 可以存储 2的32次方 - 1 个键值对(40多亿)。

3. List (列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

语法

# 左侧添加[集合不存在就创建,存在就添加]
lpush key value [value...]
# 范例
lpush list a b c d e f g

# 右侧添加
rpush key value [value...]
# 范例
rpush list2 1 2 3 4 5

# 查看list列表
lrange key start stop
# 范例
lrange list 1 4

# 左边弹出[获取集合左边的第一个元素。弹出后集合中此数据不存在]
lpop key 
# 范例
lpop list

# 右边弹出
rpop key 
# 范例
rpop list

# 获取list集合长度[集合不存在就返回0]
llen key
# 范例
llen list

# 仅当关联的集合中存在的时候,在关联的集合中头部插入一个值
lpushx  key value
# 范例
lpushx list 5

# 仅当关联key存在时候在对应的集合右边插入一个值
rpushx key value
# 范例
rpushx list 10

# 移除指定集合中指定的值[count 是负数从后面开始遍历]
lrem key count value
# 范例
lrem list 

注意 列表最多可存储 2 的 23次方 - 1元素 (4294967295, 每个列表可存储40多亿)。

4. Set (字符串集合)

Redis的Set是string类型的无序集合。它是通过HashTable实现实现的。

# 添加元素
sadd key member [member ...]
# 范例
sadd myset a b c

# 删除元素
srem key member [member ...]
srem myset a b

# 查看 set 中所有的值
smembers key
# 范例
smembers myset

# 判断参数中是否有指定的值[0-不存在;1-存在]
sismember key member 
# 范例
sismember myset 8

# 差集运算。和key的顺序有关
sdiff key [key ...]
# 范例
sadd myal a b c
sadd mybl a c 1 2
sdiff myal mybl

5. zset(sorted set:有序字符串集合)

zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

sorted-set 和set区别

  1. sorted-set 中添加,删除,跟新一个元素效率高。
  2. sorted-set 中的成员在集合中的位置是有序的
# 添加元素[元素存在就用新分数替代就分数]
zadd key 分数 元素 分数 元素 ......
# 范例
zadd mysort 70 zhangsan 80 wangwu

# 获得分数
zscore key 元素
# 范例
zscore mysort zhangsan

# 获取zset数量
zcard key
# 范例
zcard mysort

# 删除某个元素
zrem key member [member ...]
# 范例
zrem mysort wangwu

6. 通用命令

6.1 查看所有key

keys *

6.2 like 查询

keys my?

查看一my开头的所有key

6.3 删除指定的某个key

del key [key key ....]

删除指定的一个key或者多个key

6.4 判断某个key是否存在

exists key

查看指定的可以是否存在;1-存在;0-不存在。

6.5 对key设置过期时间(单位秒)

expire key 时间

6.6 查看指定key剩余时间

ttl key

6.7 获取指定key的类型

type key

6.8 不同数据切换

select index

6.9 移动指定key到不同的数据中(move)

move key index

6.9 清空数据

flushall

猜你喜欢

转载自blog.csdn.net/hxdeng/article/details/86524331