Redis基本类型与常用命令

Redis基本类型一共有五类:

  • 字符串类型(string);
  • 散列类型(hash);
  • 列表类型(list);
  • 集合类型(sort);
  • 有序集合类型(zset);

在redis中,所有的类型都是被以键值对形式存放,类型只体现在键值对的值上。

如列表类型,数据格式如下。它的整体存放仍然是key-value的格式,只不过它的value里面是一个列表类型。

如散列类型,数据格式如下。它的整体存储也是遵照key-value的格式,但是它的value存放是散列类型。

其他的几种数据类型类似,都是将各自的特点体现在了value里面。且每一种数据类型不能存在互相包含的关系。如Java中可以如下方式定义集合,在List对象中保存Map对象,Map对象中又可以保存List对象。

List<Map<String, List<String>>> list;

而在Redis中,不能存在如上那样的数据类型互相包含的关系,如列表类型的列表中,只能存放字符串,如散列类型的键值对的键和值,也都只能存放字符串。

字符串类型

字符串类型是Redis里面最简单地一种数据类型。它的值部分只存放一个字符串。

常用命令:

set key value;添加或修改一个字符串类型。如果key存在,则是修改,如果不存在,则是添加。

get key;获取一个字符串类型的value。

mset key value [key1 value1...];添加或修改一个或多个字符串类型。

mget key [key1...];获取多个字符串类型的value,以列表形式返回。

strlen key;返回字符串长度,不存在返回0。

append key value;向指定字符串后面添加字符串,如果key不存在,该命令等同set。

setnx key value;如果key不存在,则添加,如果key已存在,则不做任何操作。

由于Redis中没有数字类型,因此如果我们要计算数字类型,可以在字符串类型中进行处理。

整数型

incr key;自增1,如果key不存在,会先自动创建并设置它的value为0,然后进行incr key操作。

decr key;自减1,如果不存在,处理如上。

incrby key incrememt;增加incrememt,值增加前和增加后都必须是整数。如果key不存在,处理如上。

decrby key decrememt;减去decrememt,值减去前和减去后都必须是整数。如果key不存在,处理如上。

浮点型

incrbyfloat key incrememt;增加incrememt。这里的值和incrememt可以是整数也可以是浮点数。如果key不存在,同样处理。

散列类型

散列类型是以散列表存放的数据,它的时间复杂度是0(1),如果发生hash碰撞,会以单向链表的形式进行处理。

也因此,可以将散列类型的内部重新当成是一个字符串类型的key-value,许多常用命令与字符串类型差异不大。

常用命令:

hset key field value;添加

hget key field;获取

hmset key field value [field1 value1...];批量添加

hmget key field [field...];批量获取

hsetnx key field value;如果key不存在,则添加,如果key已存在,则不做任何操作

hincrby key field increment;对字段field的值增加整数increment。要求field原本对应的值也必须是整数。

上面六个命令在字符串类型中有类似的命令,因为散列的数据格式也是key-value,和字符串类型的格式十分相似,因此处理方法也大多相似。

hgetall key;获取所有的字段与值

hexists key field;判断某个字段是否存在

hlen key;获取字段数量。

hkeys key;获取所有字段名

hvals key;获取所有的字段值

列表类型

列表类型是一个有序可重复的双向链表,它对两头的操作是非常快速的,但是越往中间速度越慢。

常用命令:

lpush key value [value1...];从左边添加一个或多个值

rpush key value [value1...];从右边添加一个或多个值

lpop key;从左边弹出一个值。

rpop key;从右边弹出一个值。

llen key;获取列表长度。和散列类型一样,都通过*len key返回value中的元素数量。

lrange key start stop;获取从下标start到stop所有的元素(包括了start和stop)。下标按从左到右的顺序,0作为第一个下标。如果是按照从右到左的顺序,则是-1作为第一个下标。

lrem key count value;删除|count|个等于指定value的元素。如果count大于0,从左边开始,如果count小于0,从右边开始。当count等于0时,会删除所有等于value的元素。

lindex key index;获取列表中指定位置的值,如果index大于等于0,从左边开始,第一个元素下标是0。如果index小于0,则从右边开始,第一个元素下标是-1。

lset key index value;更新下标为index的元素的value,index可以为正为负。

ltrim key start stop;只保留start到stop的元素,其余全部删除。

linsert key before|after value1 value2;从左到右,在第一次出现的value1值的前面或后面插入value2值,只会插入一个元素。

rpoplpush source destination;将source中最右的元素弹出并添加到destination的左边。可以对source和destination使用同一个列表,用作轮训功能。

集合类型

集合类型具有无序性和唯一性。它是采用散列形式实现,添加的元素作为散列的key,值都是空。

常用命令:

sadd key member [member...];添加一个或多个元素

srem key member [member...];删除一个或多个元素。不写member默认删除所有元素。

smembers key;返回集合中所有的元素。

sismember key member;判断元素是否在集合中

scard key;返回集合中元素的个数。

spop key;从集合中随机弹出一个元素,并删除。

srandmember key [count];从集合中随机获取|count|个元素。假如count不存在,获取1个元素。如果count为正数,获取count个不重复元素。如果count为负数,获取-count个可重复元素。

PS:在集合中的随机并不是每个元素的概率相等。由于它是使用散列加链表的形式存放数据,因此会先在有元素的hash值中进行一个随机,找到对应的hash位置,hash位置存放的是链表,再次对链表上的元素进行随机。有的链表元素多,里面元素的选中概率就低,有的链表元素少,里面元素的选中概率就高。因此集合中每一个元素的随机概率并不相等。

集合的计算:

sdff key1 [key2..];计算key1与一个或多个集合的差集。

sinter key1 [key2...];计算多个集合的交集。

sunion key1 [key2...];计算多个集合的并集。

sdiffstore|sinterstore|sunionstore destination key [key2...];计算多个集合的差集|交集|并集,并将结果存放在新集合destination中。

有序集合类型

有序集合类型是在集合类型的基础上,增加了一个数字类型的分数score用来对元素进行排序,元素是有序不可重复的,分数可以重复,可以是整数也可以是浮点数。

常用命令:

zadd key score member [score member...];添加一个或多个元素和它们的分数。

zrem key member [member...];删除一个或多个元素。不写member默认删除所有元素。

zremrangebyrank key start stop;删除从小到大排序的下标从start到stop的元素。

zremrangebyscore key min max;删除从小到大排序的分数在min到max的元素。

scard key;返回集合中有多少个元素

zrank key member;返回元素从小到大的排名。

zrevrank key member;返回元素从大到小的排名。

zscore key member;返回元素的分数。

zincrby key incrememt member;给元素加分

zcount key min max;返回分数范围在[min,max]里的元素个数。

排序:

zrange key start stop [withscore];返回按从小到大顺序排列的下标从start到stop的元素,如果添加了withscore,还会返回它们的分数。

zrevrange key start stop [withscore];返回按从大到小熟悉怒排序的下标从start到stop的元素,添加withscore会返回分数。

zrangebyscore key min max [withscore] [limit offset count];返回按从小到大顺序排列的分数从min到max的元素,添加withscore会返回分数,添加limit

会从第offset个元素开始,返回count个元素。

zrevrangebyscore key max min [withscore] [limit offset count];返回按从大到小顺序排列的分数从max到min的元素,其余与上条类似,这里要注意的是max参数在min参数之前。

有序集合运算:

zinterstore destination numberkey key [key...] [weight] [aggregate sum|min|max];取多个集合的交集保存在新集合destination中,不添加aggregate参数时,分数会默认进行sum,weight代表每个集合的分数权重,范围从0到1,默认是1,会在aggregate之前将分数乘以权重。

zunionstore destination numberkey key [key...] [weight] [aggregate sum|min|max];取并集,与上一条类型。

原文地址:https://www.cnblogs.com/yxth/p/11498538.html

时间: 2024-07-31 14:25:26

Redis基本类型与常用命令的相关文章

redis学习(二) redis数据结构介绍以及常用命令

redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: 1.string 字符串 string字符串类型是redis最基础的数据存储类型.string是最基础的一种数据类型,其可以拓展为某种特定类型,例如普通文本,json字符串,二进制数据等等.就本质上来说,接下来要介绍的hash,list,set等其内部最基础的组成单位依然是string,只不过re

Nginx Redis redis分片 redis哨兵 redis集群 等 常用命令

Nginx  Redis  redis分片  redis哨兵  redis集群 等 常用命令 1.1.1 Nginx命令 前提:nginx的命令执行,必须在nginx的根目录中完成 命令: 1.启动nginx     start nginx 2.重启nginx     nginx -s reload 3.关闭nginx     nginx -s stop Linux命令 1.1.2 cd命令集 ifconfig  检查IP地址 cd命令是linux中最基本的命令语句,必须熟练掌握 cd / 返回

Redis Hash和List常用命令

Redis Hash和List常用命令 Hash 1. HSET 命令 127.0.0.1:6379> hset book history "story" (integer) 1 2. HSETNX 命令:为哈希表不存在的域设值 使用 HSETNX 命令当且仅当域 field 不存在时,将哈希表 key 中的 field 的值设置为 value.如果 field 已经存在,那么 HSETNX 命令将会执行无效. 3. HMSET 命令:设置多个域和值到哈希表中 4. HGET 命

Redis Set和ZSet常用命令

Redis Set和ZSet常用命令 Set 1. SADD :添加多个元素到集合中 127.0.0.1:6379> sadd goodfood "potato" "tomato" "apple" (integer) 3 2. SMOVE 命令:移动集合元素到另一个集合中 smove source destination member 3. SUNIONSTORE 命令:保存多个集合元素到新集合中 127.0.0.1:6379> su

Redis运维之常用命令操作

在平时的工作中,需要根据需求对Redis数据库进行一些操作. 可以参考Redis官网http://redis.io/commands 进行详细了解 1.SELECT 切换数据库 redis 127.0.0.1:6379[1]> HELP SELECT     SELECT index   summary: Change the selected database for the current connection   since: 1.0.0   group: connection   red

Redis 连接参数以及常用命令

redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些可执行文件可做很多事情. 可执行文件 作用 redis-server  启动redis redis-cli redis命令行工具 redis-benchmark 基准测试工具 redis-check-aof AOF持久化文件检测工具和修复工具 redis-check-dump RDB持久化文件检测工具和修复工具 redis-sentinel 启动redis-sentine

redis基本使用(常用命令及api)

redis基本使用 key keys * 查看所有key exists key 判断某个key是否存在 move key db 当前库就没有了,到指定的库中去了 expire key 为给定的key设置过期时间 ttl key 查看还有多少时间过期 -1表示永不过期 -2表示已过期 type key 查看key是什么类型 redis5大基本类型使用 1. string set key value 设置key value get key 查看当前key的值 del key 删除key append

【Linux总结】文件类型以及常用命令

Linux中的文件类型: -:普通文件(f) d:目录文件 b:块设备文件 (block) c:字符设备文件(character) l:符号链接文件(软链接文件)(symbolic link file) p:命令管道文件(pipe) s:套接字文件(socket) -rw-r--r--   1 root root     270 Feb 29 23:11 upstart-xsessions -rw-r--r--   1 root root    1018 Oct  5  2015 usb_mod

php 操作redis 以及几个常用命令

redis-cli -h host -p port -a password 首次进入redis 进行绑定ip和端口号   del key 删除指定key   exists key 检查指定key是否存在 1存在 0不存在 expire key seconds 为key 设置过期时间 时间到后 自动删除指定key persist key 移除指定key的过期时间   pttl key 以毫秒返回所剩过期时间   ttl key 以秒返回所剩过期时间   rename key newkey 修改ke