Redis 基本类型

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统

  • string

127.0.0.1:6379> set mykey somevalue
OK
127.0.0.1:6379> get mykey
"somevalue"
127.0.0.1:6379> 

能够SET和GET命令来创建和检索strings。注意,set命令将代替现有的不论什么已经存在的key。SET命令另一个提供附加參数的选项,我们能够让SET命令仅仅有在没有同样key的情况下成功。反之亦然,能够让SET命令在有同样key值得情况下成功。

127.0.0.1:6379> set mykey newval nx
(nil)
127.0.0.1:6379> get mykey
"somevalue"
127.0.0.1:6379>
127.0.0.1:6379> set mykey newval xx
OK
127.0.0.1:6379> get mykey
"newval"

string是Redis的基本类型,也能够对其进行一些有趣的操作,比如加法器:

127.0.0.1:6379> set counter 100
OK
127.0.0.1:6379> incr counter
(integer) 101
127.0.0.1:6379> incr counter
(integer) 102
127.0.0.1:6379> incrby counter 50
(integer) 152

INCR命令让the value 成为一个整数,执行一次INCR便+1。INCRBY命令便是一个加法运算。

类似的命令如减法运算为: DECR and DECRBY。

Redis能够运用MSET and MGET 命令完毕一次性的完毕多个key-value的相应关系。使用MGET命令,Redis返回一个value数组

127.0.0.1:6379> mset a 10 b 20 c 30
OK
127.0.0.1:6379> mget a b c
1) "10"
2) "20"
3) "30"
127.0.0.1:6379> 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • list

Redis列表是简单的字符串列表,依照插入顺序排序。你能够加入一个元素导列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素导头部, 而 RPUSH插入一个新元素导尾部.当一个这两个操作在一个空的Key上被运行的时候一个新的列表被创建。相似的,假设一个列表操作清空一个列表那么相应的key将被从key空间删除。这是很方便的语义,由于他们被调用使用一个空列表全然就像他们被调用时使用一个不存在的键值(能够)做为參数。

PUSH一类的命令的返回值为list的长度。

一些类表操作和结果的样例:

127.0.0.1:6379> rpush mylist A
(integer) 1
127.0.0.1:6379> rpush mylist B
(integer) 2
127.0.0.1:6379> lpush mylist first
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "first"
2) "A"
3) "B"
127.0.0.1:6379> 

注意:LRANGE 利用了两个检索值,0表示list的开头第一个,-1表示list的倒数第一个。即最后一个。-2则便是list的倒数第二个,以此类推。

这些命令都是可变的命令,也就是说你能够一次增加多个元素放入list。

127.0.0.1:6379> RPUSH mylist 1 2 3 4 5 "hello"
(integer) 9
127.0.0.1:6379> lrange mylist 0 -1
1) "first"
2) "A"
3) "B"
4) "1"
5) "2"
6) "3"
7) "4"
8) "5"
9) "hello"
127.0.0.1:6379> 

在Redis的命令操作中,另一类重要的操作:POP。取出list元素。和PUSH操作类似,POP命令能够选择不同的方向取出元素.POP命令返回值为取出的元素。

127.0.0.1:6379> rpush mylist a b c
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> rpop mylist
"c"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "a"
2) "b"
127.0.0.1:6379> lpop mylist
"a"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "b"
127.0.0.1:6379> 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • hashes

Redis Hashes是字符串字段和字符串值之间的映射,因此他们是展现对象的完美数据类型。

(比如:一个有名。姓,年龄等等属性的用户):一个带有一些字段的hash只须要一块非常小的空间存储,因此你能够存储数以百万计的对象在一个小的Redis实例中。 哈希主要用来表现对象,他们有能力存储非常多对象。因此你能够将哈希用于更多的任务。

127.0.0.1:6379> hmset user:1000 username liubo age 20 money 100 //创建记录,相等于数据库表一条记录
OK
127.0.0.1:6379> hget user:1000 username//获取值,记录的字段名相应的值
"liubo"
127.0.0.1:6379> hget user:1000 money
"100"

HMSET命令设置一个多域的hash表,HGET命令获取指定的单域,HGETALL命令获取指定key的全部信息。HMGET类似于HGET,仅仅是返回一个value数组。

127.0.0.1:6379> hmget user:1000 username age money
1) "liubo"
2) "20"
3) "100"
127.0.0.1:6379> hgetall user:1000
1) "username"
2) "liubo"
3) "age"
4) "20"
5) "money"
6) "100"
127.0.0.1:6379> 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • set

无序集合

Redis 集合(Set)是一个无序的字符串集合. 你能够以O(1)的时间复杂度 (不管集合中有多少元素时间复杂度都是常量)完毕加入,删除,以及測试元素是否存在。

Redis 集合拥有令人惬意的不同意包括同样成员的属性。

多次加入同样的元素,终于在集合里仅仅会有一个元素。

实际上说这些就是意味着在加入元素的时候无须检測元素是否存在。 一个Redis集合的很有趣的事情是他支持一些服务端的命令从现有的集合出发去进行集合运算,因此你能够在很短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences
of sets)。

127.0.0.1:6379> sadd myset 1 2 3
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> 

SADD命令产生一个无序集合,返回集合的元素个数。SMEMBER用于查看集合。

SISMEMBER用于查看集合是否存在,匹配项包含集合名和元素个数。匹配成功返回1,匹配失败返回0.

127.0.0.1:6379> SISMEMBER myset 3
(integer) 1
127.0.0.1:6379> SISMEMBER myset 30
(integer) 0

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • zset

有序集合

Redis有序集合与普通集合很相似。是一个没有反复元素的字符串集合。

不同之处是有序集合的没有成员都关联了一个评分。这个评分被用来依照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,可是评分能够是反复了。 使用有序集合你能够以很快的速度(O(log(N)))加入,删除和更新元素。由于元素是有序的, 所以你也能够很快的依据评分(score)或者次序(position)来获取一个范围的元素。訪问有序集合的中间元素也是很快的,因此你能够使用有序集合作为一个没有反复成员的智能列表。在有序集合中,你能够很快捷的訪问一切你须要的东西:有序的元素,高速的存在性測试。高速訪问集合的中间元素!
简而言之使用有序集合你能够做完毕很多对性能有极端要求的任务,而那些任务使用其它类型的数据库真的是非常难完毕的。

ZADD与SADD类似,可是在元素之前多了一个參数。这个參数便是用于排序的。形成一个有序的集合。

查看集合ZRANGE是查看正序的集合,ZREVRANGE是查看反序的集合。

0表示集合第一个元素,-1表示集合的倒数第一个元素。

127.0.0.1:6379> zadd myzset 20 liubo
(integer) 1
127.0.0.1:6379> zadd myzset 22 hello
(integer) 1
127.0.0.1:6379> zadd myzset 20 nice
(integer) 1
127.0.0.1:6379> zadd myzset 0.1 welcome
(integer) 1
127.0.0.1:6379> ZRANGE myzset 0 -1
1) "welcome"
2) "liubo"
3) "nice"
4) "hello"
127.0.0.1:6379> ZREVRANGE myzset 0 -1
1) "hello"
2) "nice"
3) "liubo"
4) "welcome"
127.0.0.1:6379> 

使用WITHSCORES 參数返回记录值。

127.0.0.1:6379> ZREVRANGE myzset 0 2  withscores //返回分数最高的前三名, 显示分数參数
1) "hello"
2) "22"
3) "nice"
4) "20"
5) "liubo"
6) "20"
127.0.0.1:6379> 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

时间: 2024-10-23 17:25:17

Redis 基本类型的相关文章

redis五大类型用法

Redis五大类型:字符串(String).哈希/散列/字典(Hash).列表(List).集合(Set).有序集合(sorted set)五种Controller:@Resource RedisTemplate<String, String> redisTemplate;总括:redisTemplate.opsForValue();//操作字符串redisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作listredi

Redis各类型应用场景[转]

Redis各类型应用场景 Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用方法 方法 说明 特性 set 设置key对应的的值为String类型的value get 获取对应key对应的String的值,如果不存在返回nil setnx 设置可以为对应的值为

redis 五大类型 、持久化方式以及主从(哨兵模式)

一.redis 五大类型: redis 键 keys * exists key的名字,判断某个key 是否存在 move key db 当前数据库就没有了,被移除了 ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期 type key 看看你的key是什么类型redis 字符串 set.get .del.append.strlen incr.decr .incrby. decrby getrange.setrange setex(set with expire)键秒值.setn

一文了解:Redis基础类型

一文了解:Redis基础类型 Redis特点 开源的,BSD许可高级的key-value存储系统 可以用来存储字符串,哈希结构,链表,集合 安装 windows:https://github.com/microsoftarchive/redis/releases mac\linux:http://www.redis.cn/ Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合). string(字符串)

redis字符串类型的基本命令

1.redis字符串类型键的设置 命令名称:SET 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 功能:给一个key添加字符串类型的值,如果该key已经存在,值会被新值覆盖,不论是上面类型的key.set设置后的键,之前的生存时间会被丢弃. 选项:EX seconds(生存时间:秒)/PX milliseconds(生存时间:毫秒)/NX(仅在键不存在时设置)/XX(仅在键存在时设置) 返回值:如果设置成功返回OK,如果设置失败,

Redis基本类型与常用命令

Redis基本类型一共有五类: 字符串类型(string): 散列类型(hash): 列表类型(list): 集合类型(sort): 有序集合类型(zset): 在redis中,所有的类型都是被以键值对形式存放,类型只体现在键值对的值上. 如列表类型,数据格式如下.它的整体存放仍然是key-value的格式,只不过它的value里面是一个列表类型. 如散列类型,数据格式如下.它的整体存储也是遵照key-value的格式,但是它的value存放是散列类型. 其他的几种数据类型类似,都是将各自的特点

Redis字符串类型相关操作命令

string是redis最基本的类型,可以包括任何类型数据,如jpg图片或者序列化对象. 单个value1最大上限是1G字节 如果只使用string类型,redis就可以被看做具有持久化特性的memcache set key value [ex 过期时间秒数]|[px 过期时间毫秒数] [nx]|[xx] 设置一个key的值,默认value的类型为stringex,px过期时间,如果同时设置以后面的为准,如set name zhangsan ex 10 px 3000,则以后面的时间为准即3秒n

Redis String类型的API使用

package com.daxin.jedis_datastructure; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; /** * Unit test for simple App. */ public class AppTest { Jedis jedis = null; @Before public void before(

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.

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

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