Redis 学习笔记(二) Redis 数据类型

Redis 数据类型

  Redis 支持五种数据类型:string(字符串)、list(列表)、hash(哈希)、set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用。

String(字符串)

  string 类型是 redis 最基本的类型,很多人说如果去除本地持久化,只使用 string 的话,那 redis 就是一个 memcached。string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。string 类型是二进制安全的,这也意味着 string 类型可以包含任何数据,常用命令如下:

序号 命令 描述
1 set key value 为指定键设置值(例:set name luofei)
2 get key 获取指定键的值(例:get name)
3 getrange key strat end 截取指定位置的键字符串(例:getrange name 0 2)
4 getset key value 给字符串重新赋值,并返回旧结果(例:getset name krockey)
5 getbit key offset 获取字符串的值的偏移(例:getbit name 4)
6 mget key1[key2..] 得到所有的字符串的值(例:mget name age)
7 setbit key offset value 设置字符串偏移(例:setbit name 0 1)
8 setrange key offset value 从指定偏移位置覆盖字符串(例:setrange name 3 aaaa)
9 mset key value[key value..] 批量设置键值(例:mset age 18 sex male)
10 msetnx key value[key value..] 批量设置多个不存在的键值(例如:msetnx country chinese address shanghai)
11 incr key 递增值,值只能为整数(例:incr count)
12 decr key 递减值,值只能为整数(例:decr count)
13 decrby key decrement 减少指定的值(例:decrby count 10)
14 append key value 在指定值后追加字符串(例:append name maska)

Hash(哈希)

  hash 是一个键值对集合,所以它特别适合存储对象,常用命令如下:

序 号 命令 描述
1 hdel key field[field2..] 删除一个或多个哈希字段(例:hdel user age)
2 hexists key field 判断一个哈希字段是否存在(例:hexists user name)
3 hget key field 获取哈希字段中的某个字段的值(例:hget user age)
4 hgetall key 获取存储在哈希中的所有字段和值(例:hgetall user)
5 hincrby key field increment 为哈希中的指定字段增加值(例:hincrby user age 10)
6 hkeys key 获取哈希中的所有字段的名称(例:hkeys user)
7 hlen key 获取哈希中字段的总数(例:hlen user)
8 hmget key field[filed2..] 批量获取哈希中指定字段的名称(例:hmget user name age)
9 hmset key field value[field2 value 2] 批量设置哈希中指定字段的值(例:hmset user name lofei age 18)
10 hset key field value 设置哈希中指定字段的值(例:hset user name lofei)
11 hsetnx key field value 设置哈希中指定字段的值,若字段存在,则不做操作(例:hsetnx user address "this is a address")
12 hvals key 获取哈希中所有的值(例:hvals user)

List(列表)

  Redis list 是一个简单的字符串列表,实际上是一个双向链表,支持反向查找和便利,更加方便,redis 内部的很多实现,如缓冲队列等用的就是这个数据结构,常用命令如下:

序号 命令 描述
1 blpop key[key2] timeout 阻塞一定秒数后获取列表中的第一个元素(例:blpop students teachers 1)
2 brpop key[key2] timeout 阻塞一定秒数后获取列表中的最后一个元素(例:brpop students teachers 1)
3 brpop push source desination timeout
阻塞一定秒数后从第一个列表中取出一个值,推到另一个列表中并返回它

(例:brpop push students teachers 0)

4 lindex key index 获取列表中指定位置的元素(例:lindex students 1)
5 linsert key before|after pivot value 在指定元素前或后插入指定的值(例:linsert students before "lucy" "lily")
6 llen key  获取列表的长度(例:llen students)
7 lpop key 获取并取出列表的第一个元素(例:lpop students)
8 lpush key value[value2..] 在列表的前面插入一个或多个值(例:lpush students tomas)
9 lpushx key value
在列表的前面插入一个或多个值,若列表不存在,则不插入任何值

(例:lpushx students )

10 lrange key start stop 获取列表中的元素区间(例:lrange students 0 5)
11 lrem key count value 从列表中删除指定值的元素(例:lrange students count tom)
12 lset key index value 设置列表中指定索引的值(例:lset students 1 david)
13 ltrim key start stop 截取列表(例:ltrim students 0 2)
14 rpop key 获取并去除列表中的最后一个元素(例:rprop students)
15 rproplpush source destination 获取第一个列表中的最后一个元素并附加到另一个列表中(例:rproplpush students teacher)
16 rpush key value[value2..] 向列表的最后添加一个或多个值(rpush students lintao lilei)
17 rpushx key value
向列表中最后插入一个值,若列表不存在,则不做插入操作

(例:rpushx students madou)

Set(集合)

  Redis 的 Set 是 string 类型的无需集合,实际上是通过 hash 表来实现的,常用命令如下:

序号 命令 描述
  sadd key mermber 向集合添加成员(例:sadd boss mayun)
  scard key 获取集合中袁术的个数(例:scard boss)
  sdiff key1 key2 获取在 key1 中不在 key2 中的元素(例:sdiff part1 part2)
  sdiffstore key key1 key2 获取在 key1 中不在 key2 中的元素并存入新的 key 中(例:sdiffstore boss boss1 boss2)
  sinter key1 key2 获取 key1 和 key2 的交集(例:sinter boss1 boss2)
  sinterstore key key1 key2 获取 key1 和 key2 的交集并存入新的 key 中(例:sinterstore boss boss1 boss2)
  sismeber key value 判断集合中是否存在指定元素(例:smembers boss mayun)
  smembers key 列出集合中的所有元素(例:smembers boss)
  smove key value 移除集合中指定的值(例:sremove boss mayun)
  spop key 移除并返回集合中的一个随机元素
  srandmember key 返回集合中的一个或多个随机数 
  srem key member1 member2... 移除集合中的一个或多个成员
  sunion key1 key2... 返回所有给定集合的并集
  sunionstore col key1 key2... 将所有给定的集合存储在col集合中
  sscan key cursor pattern count  迭代集合中的元素

Sorted Set(有序集合)

  Redis 中的 Sorted Set 和 Set 相似,但不允许成员重复,常用命令参见 Set 但有所区别,以“z”开头如:zadd、zcard、zincrby等等。

时间: 2024-10-05 05:24:25

Redis 学习笔记(二) Redis 数据类型的相关文章

Java学习笔记二:数据类型

Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围从-2 147 483 6至2 147 483 647 超过20亿,如果用来存储大于20亿的值,最好使用long型. 1.2  int 与Integer: Java中的数据类型分为基本数据类型和复杂数据类型.Int为前者,integer为后者. Integer是int的封装类,提供了很多转换方法,当

Redis学习笔记(三) Redis API与常用数据类型简介

一.Redis中常用数据类型 由上一篇博客可知,Redis目前提供五种数据类型:string(字符串).list(链表).Hash(哈希).set(集合)及zset(sorted set)  (有序集合).现在,我们一一来看看这五种数据类型的基本使用方法.在开始介绍之前,我们先使用刚刚引入的Redis API建立一个Redis客户端对象,有了这个客户端对象,我们才能和Redis服务端进行通信,且看下面的一行代码.我们需要事先指定好Redis服务端的IP地址和端口号,然后根据这两个信息建立一个Re

Redis学习笔记(4) Redis事务、生存时间及排序

1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令. 127.0.0.1:6379> multi OK 127.0.0.1:6379> sadd user:1:following 2 QUEUED 127.0.0.1:6379> sadd user:2:followers 1 QUEUED 127.0.0.1:6379>

redis 学习笔记二 (简单动态字符串)

redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; char data[0]; }; 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移   2.不占任何空间,指针需要占用int长度空间,空数组不占任何空间.  这个数组不占用任何内存,意味着这样的结构节省空间: 该数组的内存地址就和他后面的元素的地址相同,意味着无需初始化,数组名就是后面元素的地

Redis学习笔记二

一.事务 Redis中的事务是一组命令的集合.一个事务中的命令要么都执行,要么都不执行. 1.事务简介 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令.下面看一个示例: 首先,使用multi命令告诉Redis:下面我给你的命令属于同一个事务,你先不要执行,而是暂时存起来. 然后,我们发送两个set命令来实现赋值,可以看到redis没有执行这些命令,而是返回queued表示这两条命令已经进入等待执行的事务队列中. 当所有要在同一事务中执行的命令都发给Redis后

Redis学习笔记(3) Redis基础类型及命令之二

1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等,以及多个集合类型之间进行并集.交集和差集运算. (1) 命令 1) 增加/删除元素 格式为:SADD key member [member ...] SREM key member [member ...] SADD向集合中增加一个或多个元素,加入的元素若已存在语集合中,则会忽略该元素.命令返回成功

Redis的具体使用-Redis学习笔记二

1. key的操作 在redis里边,除了"\n"和空格 不能作为名字的组成内容外,其他内容都可以作为key的名字部分.名字长度不做要求. 不同redis数据库切换: 用select  ,默认是操作数据库0,默认共有16个数据库,所以数据库Index是从0到15 操作例子 [[email protected] ~]# cd /usr/local/ [[email protected] local]# cd redis/ [[email protected] redis]# l -bas

REDIS学习笔记 之 STRING数据类型

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.10.11 转载请注明来自"祁峰"的CSDN博客 1 简单概述 String数据类型是Redis中最简单.最基础的数据类型,Redis中所有的KEY和VALUE都是String类型,且其他更为复杂的数据类型(LISTS.SETS.SORTED-SETS.HASHES)也均基于String数据类型来存储的.String数据类型是二进制安全的,也就是说

redis 学习笔记(二)

安装 1. 在centos下安装g++,如果输入 yum install g++,那么将会提示找不到g++.因为在centos下g++安装包名字叫做:gcc-c++ 所以应该输入 yum install gcc-c++,即可. 2. You need tcl 8.5 or newer in order to run the Redis test make: *** [test] Error 1 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-

Redis学习笔记(2) Redis基础类型及命令之一

1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 127.0.0.1:6379> SET bar 1 OK # 获取Redis所有键 127.0.0.1:6379> KEYS * 1) "bar" 注意:KEYS命令需要遍历Redis中所有键,因此当键的数量较多时会影响性能. (2) 判断一个键是否存在 格式为:EXISTS key 如果存在则返回1,否则返回0. 127.0.0.