Redis数据类型

Redis五种数据类型分别是String、hash(哈希)、list(列表)、set(集合)、sort set(有序集合)。

字符串String

字符串类型是Redis中最基本的数据存储类型,是一个由字节组成的序列,是二进制安全的,接受任何格式数据。JPEG图形、JSON、字符串、整数和浮点,标准的key-value,可容纳512MB数据。

哈希hash

是一个键值(key=>value)对集合。hash结构可以像数据库中update一个属性一样只修改某一项属性值。适合用于存储对象。

列表list

由多个字符串组成的有序可重复的序列,是链表结构。按照插入顺序排序。可以添加一个元素到列表的头部或尾部。最多存储2^32-1(40多亿)。

集合set

String类型无序不重复组合。通过哈希表实现的。最多存储2^32-1(40多亿)。

有序集合zset

String类型有序不重复集合。每个元素都会关联一个double类型的分数。redis通过分数为集合成员进行从小到大排序。

Redis是一个字典结构的存储服务器,实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。与在关系数据库实例中可以创建多个数据库类似,可以将每个字典都理解成一个独立的数据库。
每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库。
Redis不支持自定义数据库的名字,每个数据库都以编号命名。也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问。多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。

Redis的key和value是区分大小写的,命令不区分大小写,redis是单线程,不适合存储大容量的数据。

命令:

String

命令行:

set a test 新增key是a,value是test

get a 查询key是a的数据

incr key 对应的value自增1,如果没有key值,自动创建并复制1,自增value是可以转成数字的。

decr key 对应的value自减1

Java:

jedis.set("username","zhangsan");

jedis.mset("address","bj","sex","1"); 批量添加

String username=jedis.get("username");

List<String> list=jedis.mget("username","sex");

jedis.del("username");

jedis.set("user:01","zhangsan");

jedis.set("user:02","lisi");

jedis.get("user:01");

Hash

命令行:

hset key filed value 设置值

hget key filed 获取值

Java:

jedis.hset("userInfo", "name", "zhangsan");

Map<String,String> map=new HashMap<>();

map.put("age","20");

map.put("sex","1");

jedis.hmset("userInfo",map);

String name=jedis.hget("userInfo","name");

List<String> list=jedis.hmget("userInfo","age","sex");

jedis.hdel("userInfo","name");

List

命令行:

lpush list 1 2 3 4 从左添加元素

rpush list 1 2 3 4 从右添加元素

lrange list 0 -1 从0到-1元素查看:也表示查看所有

Java:

jedis.lpush("studends","zhangsan","wangwu");

jedis.rpush("studends","wangerxiao");

List<String>students=jedis.lrange("studends",0,2);

Long total=jedis.llen("studends");

jedis.lrem("studends",1,"zhangsan"); 删除列表第一次出现zhangsan

jedis.del("studends");

Set

命令行:

sadd set1 a b c d d 向set1中添加元素

smembers set1 查询元素

srem set1 a 删除元素

Java:

jedis.sadd("letters","aaa","bbb","ccc","ddd");

Set<String> letters=jedis.smembers("letters");

jedis.srem("letters","aaa","bbb");

Zset

命令行:

zadd zset1 9 a 8 c 10 d 1 e 添加元素,数字是顺序

zrange zset1 0 -1 从小到大查询所有元素

zrevrange zset1 0 -1 从大到小查询所有元素

Java:

Map<String,Double> members=new HashMap<>();

members.put("zhangsan",99D);

members.put("lisi","96D");

members.put("wangwu", 92D);

jedis.zadd("ai",members):

Set<String> ai=jedis.zrange("ai",0,4);

Long total=jedis.zcard("ai");

jedis.zrem("ai","zhangsan","lisi");

Key

命令行:

expire key second 设置key的过期时间

ttl key 查看剩余时间

persist key 清除过期时间,也是持久化,持久化成功提示1 不成功0

del key 删除key

select 0 选择0号数据库,默认是0号数据库

Java:

jedis.dbSize();

jedis.keys("*");

原文地址:https://www.cnblogs.com/DreamFather/p/15305374.html