redis数据类型的使用及介绍
Redis数据类型
1、Sting类型
set命令
设置键值,存在则覆盖,不存在则新建
set key value EX 秒
设置有效时长为秒
nx 如果键不存在则新建,如果存在返回nil
xx 只有键存在才能操作
127.0.0.1:6379> auth foobared # 注释Windows上操作redis时需要输入配置文件上的密码
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set wusir 666
OK
127.0.0.1:6379> get wusir
"666"
127.0.0.1:6379> set gg ll ex 5
OK
127.0.0.1:6379> get gg
"ll"
127.0.0.1:6379> get gg
(nil)
127.0.0.1:6379> keys *
1) "wusir"
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k1 v1 nx
(nil)
127.0.0.1:6379> set k2 v2 nx
OK
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> set k3 v3 xx
(nil)
127.0.0.1:6379> set k1 va
OK
127.0.0.1:6379> get k1
"va"
127.0.0.1:6379>
get命令
获取key 对应的value,只能获取一个,KEY存在,返回value,不存在返回nil
mset
批量设置key,和value的值,会覆盖已存在的值
mget
批量获取key值,如果不存在返回nil
getset
给key重新设定value,并返回原来的value,如果key不存在则返回nil
strlen
返回value的长度
append
key存在追加,不存在新建
incr
将Key中的数字加1,只能对数字产生作用
- 常用作计数,在使用getset重置为0
decr
将Key中的数字减1,只能对数字产生作用
incrby
增加指定值 多少,只能对数字产生作用
decrby
减少指定值 多少,只能对数字产生作用
indcrbyfloat(默认保留17位)
增加指定的浮点数,不存在减少,但是可以加上负的浮点数
getrange
切片同Python切片类似,没有步长
127.0.0.1:6379> mset k5 v5 k6 v6
OK
127.0.0.1:6379> get k5
"v5"
127.0.0.1:6379> get k6
"v6"
127.0.0.1:6379> get k3
(nil)
127.0.0.1:6379> keys *
1) "k6"
2) "k2"
3) "wusir"
4) "k1"
5) "k5"
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "va"
2) "v2"
3) "v3"
127.0.0.1:6379> mset k1 v1 k7 v7
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> getset k1 va
"v1"
127.0.0.1:6379> get k1
"va"
127.0.0.1:6379> strlen wusir
(integer) 3
127.0.0.1:6379> append k1 vava
(integer) 6
127.0.0.1:6379> get k1
"vavava"
127.0.0.1:6379> set k8 8
OK
127.0.0.1:6379> incr k8
(integer) 9
127.0.0.1:6379> get k8
"9"
127.0.0.1:6379> decr k8
(integer) 8
127.0.0.1:6379> get k8
"8"
127.0.0.1:6379> incrby k8 10
(integer) 18
127.0.0.1:6379> decrby k8 9
(integer) 9
127.0.0.1:6379> get k8
"9"
127.0.0.1:6379> set name wusir
OK
127.0.0.1:6379> keys *
1) "name"
2) "k2"
3) "wusir"
4) "k5"
5) "k6"
6) "k8"
7) "k1"
8) "k3"
9) "k7"
127.0.0.1:6379> getrange 1,3
(error) ERR wrong number of arguments for 'getrange' command
127.0.0.1:6379> getrange name 1,3
(error) ERR wrong number of arguments for 'getrange' command
127.0.0.1:6379> GETRANGE name 1 3
"usi"
127.0.0.1:6379> get name
"wusir"
127.0.0.1:6379> getrange -1 -3
(error) ERR wrong number of arguments for 'getrange' command
127.0.0.1:6379> getrange name -1 -3
""
127.0.0.1:6379> getrange name 1 3
"usi"
127.0.0.1:6379> getrange name -3 -1
"sir"
127.0.0.1:6379>
2.List类型
lpush:从左边推入
lpop:从右边弹出
rpush:从右变推入
rpop:从右边弹出
lpush插入
- 语法:lpush 名称 值1 值2
lrange 查看所有
- lrange 名称 0 -1
lpop
- 移除并返回列表的第一个元素
rpop
- 移删除尾部的值
rpush(插入在最后的位置)
- 语法:rpush 名称 值1 值2,
rpushx
- 将value值插入到Key的尾部,Key必须存在才可以
lpushx
- 将value值插入到Key的头部,Key必须存在才可以
127.0.0.1:6379> auth foobared
OK
127.0.0.1:6379> lpush list 11 22
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "22"
2) "11"
127.0.0.1:6379> rpush aaa bbb ccc
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "22"
2) "11"
127.0.0.1:6379> lrange aaa 0 -1
1) "bbb"
2) "ccc"
127.0.0.1:6379> rpush list aaa bbb cc
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "22"
2) "11"
3) "aaa"
4) "bbb"
5) "cc"
127.0.0.1:6379> keys *
1) "aaa"
2) "list"
127.0.0.1:6379> del aaa
(integer) 1
127.0.0.1:6379> keys *
1) "list"
127.0.0.1:6379> lpop list
"22"
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "aaa"
3) "bbb"
4) "cc"
127.0.0.1:6379> rpop list
"cc"
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "aaa"
3) "bbb"
127.0.0.1:6379>
lindex
- 从表头开始获取下标为index的value,索引从0开始
linsert
- 将value插入到key指定元素的key前或者后
BEFORE AFTER
,如果value不存在,则不操作
- 将value插入到key指定元素的key前或者后
llen
- 获取列表的长度
lrem
- count >0 从表头向表位,查找指定的个数
- count=0全部删除
- count <0 从表尾的方向表头,查找指定的个数
lset
- 置换指定索引位置的value,如果超出索引范围则报错
ltrim
- 列表切片
127.0.0.1:6379> keys *
1) "list"
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "aaa"
3) "bbb"
127.0.0.1:6379> linde list 1
(error) ERR unknown command 'linde'
127.0.0.1:6379> lindex list 1
"aaa"
127.0.0.1:6379> linsert list before aaa hello
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "hello"
3) "aaa"
4) "bbb"
127.0.0.1:6379> linsert list after aaa hhh
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "hello"
3) "aaa"
4) "hhh"
5) "bbb"
127.0.0.1:6379> llen list
(integer) 5
127.0.0.1:6379> lpush list aaa
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "aaa"
2) "11"
3) "hello"
4) "aaa"
5) "hhh"
6) "bbb"
127.0.0.1:6379> lrem list 1 aaa
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "11"
2) "hello"
3) "aaa"
4) "hhh"
5) "bbb"
127.0.0.1:6379> lpush list bbb
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "bbb"
2) "11"
3) "hello"
4) "aaa"
5) "hhh"
6) "bbb"
127.0.0.1:6379> lrem list -1 bbb
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "bbb"
2) "11"
3) "hello"
4) "aaa"
5) "hhh"
127.0.0.1:6379> lpush list hhh
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "hhh"
2) "bbb"
3) "11"
4) "hello"
5) "aaa"
6) "hhh"
127.0.0.1:6379> lrem list 0 hhh
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "bbb"
2) "11"
3) "hello"
4) "aaa"
127.0.0.1:6379> lset list 1 zbh
OK
127.0.0.1:6379> lrange list 0 -1
1) "bbb"
2) "zbh"
3) "hello"
4) "aaa"
127.0.0.1:6379> ltrim list 1 3
OK
127.0.0.1:6379> lrange list 0 -1
1) "zbh"
2) "hello"
3) "aaa"
127.0.0.1:6379>
3、hash型
存储类型
{"db":{"redis":"redis.conf","mysql":"mysql.conf","ningx":"ningx.conf"}}
127.0.0.1:6379> hset db redis redis.conf
(integer) 1
127.0.0.1:6379> hset db mysql mysql.conf
(integer) 1
127.0.0.1:6379> hset db ningx ningx.conf
(integer) 1
127.0.0.1:6379> hget db mysql
"mysql.conf"
127.0.0.1:6379> hgetall db
1) "redis"
2) "redis.conf"
3) "mysql"
4) "mysql.conf"
5) "ningx"
6) "ningx.conf"
127.0.0.1:6379>
HSET
- 给hash增加key value值
HLEN
- 获取hash的长度
hget
- 获取 hash里面的key和value值
- 语法:hget hashname key
hgetall
- 获取所有的键值对
hmset
- 批量增加键值对
hmget
- 批量获取键值对
hsetnx
- 给指定的hash增加键值对,如果原来的Filed存在,则操作无效,如果不存在则创建
hkeys
- 获取hash所有的field
hvals
- 获取hash中所有的value
hdel
- 删除hash表中一个或者多个filed
hexists
- 判断hash表中是否存在,如果存在为1,不存在为0
hincrby
- 给hash表中的数字,增加指定的数值,只限数值
hincrbyfloat
- 给hash表中的数字,增加指定的浮点数值,只限数值
127.0.0.1:6379> hgetall db
1) "redis"
2) "redis.conf"
3) "mysql"
4) "mysql.conf"
5) "ningx"
6) "ningx.conf"
127.0.0.1:6379> HLEN db
(integer) 3
127.0.0.1:6379> hmset ac 1 2 2 3 3 4 4 5 5 6
OK
127.0.0.1:6379> hmget ac 1 2 3 4 5
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
127.0.0.1:6379> hkeys ac
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> hvals db
1) "redis.conf"
2) "mysql.conf"
3) "ningx.conf"
127.0.0.1:6379> hdel ac 5
(integer) 1
127.0.0.1:6379> hkeys ac
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> hexists db mysql
(integer) 1
127.0.0.1:6379> hexists db sqlserver
(integer) 0
4、SET型
sadd
- 给集合添加值,如果存在则保留,什么都不操作,如果值不存在则添加
smembers
- 获取所有的成员
SCARD
- 获取集合个数
sdiff
- 获取两个集合差集,前面存在的但是后面不存在的元素
sinter
- 获取两集合的交集
sunion
- 获取两集合并集
sismember
- 判断元素是否在集合内,存在为1,不存在返回0
smove
- 将指定的元素从一个集合移动到另一个集合中,如果源集合存在则移动,如果不存在则忽略;如果目标集合存在直接移动,如果目标集合不存在则新建并移动;
spop
- 随机删除指定个数的元素,并把删除的元素打印出来
srandmeber
随机获取指定个数元素
如果count>0
- count>集合总数,全部取出
- count小于集合总数,则随机取出count个
如果count<0,则随机count次取出值
SREM
- 删除集合中的指定一个或者多个元素
127.0.0.1:6379> sadd col k1 k1 k1 k2 k3 k2
(integer) 3
127.0.0.1:6379> smembers col
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> scard col
(integer) 3
127.0.0.1:6379> sadd coo k1 k5
(integer) 2
127.0.0.1:6379> sdiff col coo
1) "k2"
2) "k3"
127.0.0.1:6379> sinter col coo
1) "k1"
127.0.0.1:6379> sunion col coo
1) "k2"
2) "k5"
3) "k3"
4) "k1"
127.0.0.1:6379> sismember col k4
(integer) 0
127.0.0.1:6379> sismember col k3
(integer) 1
127.0.0.1:6379> spop col 2
(error) ERR wrong number of arguments for 'spop' command
127.0.0.1:6379> SPOP col
"k2"
127.0.0.1:6379> srem col k3
(integer) 1
5、ZSET
有序集合
zadd
- 添加
zrange
- 遍历
127.0.0.1:6379> zadd a 1 123
(integer) 1
127.0.0.1:6379> zadd a 2 123
(integer) 0
127.0.0.1:6379> zadd a 3 1234
(integer) 1
127.0.0.1:6379> zrange a 0 -1
1) "123"
2) "1234"
127.0.0.1:6379>
刚刚学习,如有错误欢迎指正;
redis数据类型的使用及介绍的更多相关文章
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- redis介绍、安装、redis持久化、redis数据类型
1.redis介绍 2.安装管网:https://redis.io/下载:wget -c http://download.redis.io/releases/redis-4.0.11.tar.gz解 ...
- Redis数据类型介绍
Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...
- redis数据类型-散列类型
Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...
- redis数据类型-字符串类型
Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- redis数据类型及订阅操作
Redis数据类型详解 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPG文件的内容都可以.空字符串也是有效k ...
- redis教程(一)-----redis数据类型、基本命令、发布订阅以及持久化
简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMwa ...
随机推荐
- Ubuntu更换镜像源
不同的源 当修改sources.list文件时,我们需要将下面任意一个镜像源的代码复制粘贴到该文件中. 阿里源 # 阿里镜像源 deb http://mirrors.aliyun.com/ubuntu ...
- IDE集成git
目录 简介 Git安装 IDE集成Git IDE集成Git代码的创建分享上传 代码的下载和普通上传 分子的创建以及合并 代码的回滚 查看历史版本 简介 Git 是一个开源的分布式版本控制软件,用以有效 ...
- JSP response.setCharacterEncoding与response.setContentType的区别
问题描述 昨天在参考别人的项目时,发现页面引用js,css等文件总是乱码,后来才发现是MIME类型统一设置为text/html,并且仅仅编码设置了浏览器端的解析编码.另外,可以先通过文本编辑器(如no ...
- JS 选择结构语句与循环结构语句
笔记整理自:廖雪峰老师的JS教程 选择结构 与Java使用一致. 需要注意的 JavaScript把null.undefined.0.NaN和空字符串''视为false,其他值一概视为true. 循环 ...
- JavaScript与java语法区别
网页中各种技术的作用 感谢大佬:https://blog.csdn.net/RookiexiaoMu_a/article/details/89052768 HTML 制作网页的结构 CSS 美化网页 ...
- sms短信网关对接
因为工作的需求,需要对接短信网关,业务上就是一个注册用户时,需要发送手机验证码;可能别的公司都是使用第三方接口,但是大点的公司,为了安全,他们都有自己的短信消息中心(SMSC) 1.业务需求 - 1. ...
- Nginx http重定向https
SSL证书申请的腾讯的,配置好证书后,直接监听80端口转发443就ok了 转发语句:rewrite ^/(.*) https://$server_name:443$request_uri? perma ...
- 前端语言之js(对比python快速入门)
昨日内容回顾 浮动 定位 溢出 透明度 模态框 今日内容概要 变量与常量 基本数据类型 数据类型内置方法 函数 常见内置对象 BOM与DOM操作 内容详细 1.变量与常量 # 在JS中声明变量需要使用 ...
- 用Java模拟实现对系统文件以目录的拷贝功能
要用Java对单个文件拷贝的话,其实思路很简单,循环读取被拷贝文件,放入byte数组,然后写入目标文件.当然我们也可以借助现有的类去完成,如InputStream中的transferTo()方法就可以 ...
- 浅谈Java正则表达式
正则表达式我们都知道,它定义了字符串的模式,可以用来搜索.编辑或处理文本.我们在某些特定场景中用起来是非常方便的.它等于是给我们划定了一个范围,让我们可以精准的匹配到我们想要的结果.比如我想判断一个几 ...