Redis数据库的数据结构与其常用命令

一.Redis数据结构

Redis数据库支持的五种数据结构:字符串(String),哈希(hash),列表(list),集合(set),有序集合(sorted set)。

1.字符串(String) 

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象,整形也是放字符串中。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

# set 设置键与值
set key1 "hello world"
set key2 "java hadoop"

#get 拿出键对应的值
get key1    -- 打印“hello world”

# mget 获取一个或多个键多对应的的值
mget key1 key2  
--打印"hello world"
--打印"java hadoop"

# getrange  根据下标拿去键中的字字符串
getrannge key1 1,5
-- 打印"ello "

# strlen 计算字符串的长度
strlen key1 
-- 打印“(integer) 11”

# incr 将存好的数字自增1
set cal 1
get cal 
-- 打印“1”
incr cal
-- 打印“(integer) 2”

# append 在字符串后黏接字符串
append key1 " mysql"
-- 打印"hello world mysql"

2.哈希(hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

# hmset  设置键值
hmset bigkey smallkey1 hello 
hmset bigkey smallkey2 world
hmset bigkey smallkey3 java

# hmget 拿取键值
hmget bigkey smallkey1 smallkey2
--打印 1) "hello"
      2) "world"
      
# hdel 删除键值
hdel bigkey smallkey3 


# hexists 查看键值是否存在
hexists bigkey smallkey3
-- 打印"(integer) 0"
hexists bigkey smallkey2
-- 打印"(integer) 1"  

# hgetall 拿出所有键与键对应的值
hgetall bigkey
-- 打印"1) "smallkey1"
2) "hello"
3) "smallkey2"
4) "world"
"

# hkeys 拿出大键里的所有键(没有值)
hkeys bigkey
-- 打印"1) "smallkey1"
2) "smallkey2"
"

# hvals 拿出大键里的所有值(没有键)
hvals bigkey
-- 打印"1) "hello"
2) "world"
"

# hlen 统计大键里的所有键的个数
hlen bigkey
-- 打印"(integer) 2"

3.列表(list)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

# lpush 存放键值
lpush lst hello world redis java hadoop
最后的存储结果:  "1) "hadoop"
				2) "java"
				3) "redis"
				4) "world"
				5) "hello"
				"

# lrange  按索引拿去存放的值
lrange lst 0 4
-- 打印 "1) "hadoop"
        2) "java"
        3) "redis"
        4) "world"
        5) "hello"
"

# lindex 按索引拿去值(从0开始)
lindex lst 3
-- 打印"world"

# lrem 删除与所给的值一样的值
lrem lst 1 java
-- 将栈头往下的第一个"java"删除
lrem lst -1 java
-- 将栈底往上的第一个"java"删除
lrem lst 0 java
-- 将栈中所有的"java"删除

# lset 通过索引替换值
lset lst 5 hadoop
-- 将下标5对应的"world"换成"hadoop"

4.集合(set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据(就是自动去重)。集合对象的编码可以是 intset 或者 hashtable。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

# sadd 存放键值(自动去重)
sadd ttt java hadoop java mysql redis java
-- 只存放了4个值

# smembers 查看键所对应的值
semebers ttt
-- 打印"1) "redis"
	   2) "java"
 	   3) "hadoop"
	   4) "mysql"
		"

# scard 获取集合成员数
scard ttt
-- 打印"(integer) 4"

# sismember 查看所给的值在不在
sismember ttt java
-- 打印"(integer) 1"

# srem 删除所给的值
srem ttt java
-- 将"java"删除

# sunion 返回所有给定集合的并集
sadd rrr hadoop java hello world mysql
sunion rrr ttt
-- 打印"1) "hello"
	   2) "redis"
	   3) "java"
	   4) "mysql"
	   5) "world"
	   6) "hadoop"
 		"

5.有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中国java之父.~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值