redis基本类型和使用方法详解

redis存储数据的基本类型有:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。

依次做一些练习。redis命令不区分大小写。

key相关操作

127.0.0.1:6379> set key hello ## 设置
OK
127.0.0.1:6379> set key1 world
OK
127.0.0.1:6379> keys ke* ## keys查询键名
1) "key1"
2) "key"
127.0.0.1:6379> del key1 ## 删除键值对
(integer) 1
127.0.0.1:6379> exists key ##查询键名是否存在
(integer) 1 ##存在返回1
127.0.0.1:6379> exists key1
(integer) 0 ##不存在返回0
127.0.0.1:6379> type key ##查询键值的类型
string

字符串类型

127.0.0.1:6379> exists num
(integer) 0
127.0.0.1:6379> incr num ##incr一个不存在的值,先创建新值,赋值为0,再自增1.院子操作。 对应的是decr
(integer) 1
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> incr key ##无法对string自增
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incrby num 3 ##increby增加指定的数值,对应的是decrby
(integer) 4
127.0.0.1:6379> incrbyfloat num 0.7 ##增加浮点数
"4.7"
127.0.0.1:6379> append key " world!" ##append追加字符
(integer) 12
127.0.0.1:6379> get key
"hello world!"
127.0.0.1:6379> strlen key ##strlen字符串长度
(integer) 12
127.0.0.1:6379> mget key num ## mget批量获取键值
1) "hello world!"
2) "4.7"
127.0.0.1:6379> mset key hi num 5.5 ##mset批量设置
OK
127.0.0.1:6379> mget key num
1) "hi"
2) "5.5"
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> getbit foo 1 ##getbit获取某一位二进制数值
(integer) 1
127.0.0.1:6379> setbit foo 22 0 ##设置修改位值
(integer) 1
127.0.0.1:6379> get foo ##修改成功
"bap"
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> set foo1 aar
OK
127.0.0.1:6379> bitop or result foo foo1 ##bitop位操作
(integer) 3
127.0.0.1:6379> get result
"car"

GETBIT key offset

SETBIT key offset value

BITCOUNT key [start] [end] 获取键值中值为1的二进制位个数,start和end表示字节位置

BITOP operation destkey key [key...] 对多个键值进行位运算,并将结果存储在destkey对应的键值中。支持的操作:AND、 OR、 XOR、 NOT。

GETSET key newValue 原子操作,设置新值,返回原来的值。如果原值不存在,返回nil。

SETEX key seconds value 设置键值对的失效时间是seconds秒。

SETNX key value put if absent, or do nothing。

SETRANGE key offset value 从index等于offset位置起,替换length(value)个字符,替换为value。如果offset超出范围,则中间补充0x00。

GETRANGE key start end 获取指定返回的字符串,闭区间。end超过长度,则取到字符串末尾。

MGET key [key ... ]

MSET key value [key value ... ]

MSETNX key value [key value ... ] 原子操作。如果在这一批Keys中有任意一个Key已经存在了,那么该操作将全部回滚,即所有的修改都不会生效。1表示全部设置成功;0表示都没有设置。

127.0.0.1:6379> getset foo hi ##设置新值,返回旧值nil
(nil)
127.0.0.1:6379> get foo
"hi"
127.0.0.1:6379> setex foo 2 hello ##设置键值对,2秒失效
OK
127.0.0.1:6379> get foo ##没失效时,返回值
"hello"
127.0.0.1:6379> get foo ##失效之后,返回nil
(nil)
127.0.0.1:6379> set foo hello
OK
127.0.0.1:6379> setrange foo 1 appy ##替换index=1之后的字符串
(integer) 5
127.0.0.1:6379> get foo
"happy"
127.0.0.1:6379> setrange foo 1 ee
(integer) 5 ##返回修改后的长度
127.0.0.1:6379> get foo ##替换两个字符
"heepy"
127.0.0.1:6379> setrange foo 8 day
(integer) 11
127.0.0.1:6379> get foo
"heepy\x00\x00\x00day"
127.0.0.1:6379> get bar
(nil)
127.0.0.1:6379> setrange bar 2 ee ##bar的值为nil,补充两个0x00
(integer) 4
127.0.0.1:6379> get bar
"\x00\x00ee"
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> msetnx key1 hi key2 hi ##key2不存在,不修改
(integer) 0
127.0.0.1:6379> mget key1 key2 ## key2依然为nil
1) "hello"
2) (nil)

hash

HSET key field value

HGET key field

HMSET key field value [field value ... ]

HMGET key field [field ...]

HGETALL key

HEXISTS key field

HSETNX key field value 字段不存在时赋值。 与HSET类型,区别在于,如果字段存在,HSETNX不执行任何操作。

HINCRBY key filed increment 如果key、field不存在,自动创建,键值为0,再增值。

HDEL key field [field...] 这是删除的是key:field,不能直接删除key。如果要删除key,使用DEL命令。

HEYS key 只获取字段名

HVALS key 只获取字段值

HLEN key 获得字段数量

127.0.0.1:6379> HMSET g1class1 xiaoming 001 xiaohong 002 tom 003 hanmeimei 004
OK
127.0.0.1:6379> HGETALL g1class1
1) "xiaoming"
2) "001"
3) "xiaohong"
4) "002"
5) "tom"
6) "003"
7) "hanmeimei"
8) "004"
127.0.0.1:6379> HKEYS g1class1
1) "xiaoming"
2) "xiaohong"
3) "tom"
4) "hanmeimei"
127.0.0.1:6379> HLEN g1class1
(integer) 4
127.0.0.1:6379> HGET g1class1 xiaohong
"002"
127.0.0.1:6379> HSET g1class1 lilei 005 ##het新值时,返回1
(integer) 1
127.0.0.1:6379> hset g1class1 xiaohong 007 ## hset更新值时,返回0
(integer) 0
127.0.0.1:6379> hsetnx g1class1 tom 008 ##已存在的值,不操作
(integer) 0
127.0.0.1:6379> hget g1class1 tom ##已存在的值,更新不生效,还是003
"003"
127.0.0.1:6379> hdel g1class1 ##不能直接删除key
(error) ERR wrong number of arguments for 'hdel' command
127.0.0.1:6379> DEL g1class1 ##使用DEL删除key
(integer) 1
127.0.0.1:6379> hgetall g1class1 ##查询为空
(empty list or set)

用途

  1. 用来存储分级数据。外部key作为prefix,是第一级key,hash中的key作为第二级key使用。
  2. 存储含有多个属性的对象,如一篇博客的各种属性:标题,标签,分类等。修改某个属性,不用操作整个博客内容。

list

redis列表类型内部是使用双向列表实现的,所以可以向/从两端添加/删除元素。

LPUSH key value [value ...] 从左侧添加元素,如果key不存在,初始化一个空列表,再添加。返回插入后,链表的个数。

LPUSHX key value 仅当指定的Key存在时,才在列表的左边插入Value,否则将不会有任何操作发生。返回插入后,链表的个数。

RPUSH key value [value ...] 从右侧添加元素

RPUSHX key value 仅当指定的Key存在时,才在列表的右边插入Value,否则将不会有任何操作发生。返回插入后,链表的个数。

LPOP key 从两端弹出元素

RPOP key

LLEN key 获取列表中元素个数

LRANGE key start end 获取列表片段,左边在前,右边在后。起始索引为0,最右边元素索引可以为-1,右边第二个索引可以为-2,以此类推。。。索引从左到右,如果start比end靠右,则返回空列表。end值可以大于长度范围。

LREM key count value 从左边(count > 0)开始,删除前count个值为value的元素;从右边(count < 0)开始,删除前|count|个值为value的元素 ; 删除所有值为value的元素(count = 0)。返回实际删除元素的个数。

LINDEX key index 获取指定索引的元素值

LSET key index value 设置指定索引的元素值

LTRIM key start end 删除指定索引范围之外的所有元素。start和end的规则与lrange的相同。

LINSERT key BEFORE|AFTER pivot value 从左到右查找pivot,将value插在其前面(BEFORE)或者后面(AFTER)。 返回插入后,元素总个数。

RPOPLPUSH source destination 删除source最右边的元素,插入到destination最左边。返回操作的元素。

127.0.0.1:6379> lpush num 1 2 ## 先push 1,再push 2
(integer) 2
127.0.0.1:6379> rpush num 3 4 ##先push 3,再push 4
(integer) 4
127.0.0.1:6379> lrange num 0 -1 ##从0开始,显示4个元素
1) "2"
2) "1"
3) "3"
4) "4"
127.0.0.1:6379> llen num
(integer) 4
127.0.0.1:6379> lrange num -1 -2 ##start比end靠右,返回空列表
(empty list or set)
127.0.0.1:6379> lrange num -2 -1 ##从右边第二到右边第一
1) "3"
2) "4"
127.0.0.1:6379> lpush num 3 4 3
(integer) 7
127.0.0.1:6379> lrange num 0 -1
1) "3"
2) "4"
3) "3"
4) "2"
5) "1"
6) "3"
7) "4"
127.0.0.1:6379> lrem num 2 3
(integer) 2  ## 一共删除了两个
127.0.0.1:6379> lrange num 0 -1
1) "4"
2) "2"
3) "1"
4) "3"
5) "4"
127.0.0.1:6379>
127.0.0.1:6379> lrem num 0 4 ##删除所有值为4元素
(integer) 2    ## 一共删除了两个
127.0.0.1:6379> lrange num 0 -1
1) "2"
2) "1"
3) "3"
127.0.0.1:6379> lrem num 2 3
(integer) 1 ##只删除了一个元素
127.0.0.1:6379> lrange num 0 -1
1) "2"
2) "1"
127.0.0.1:6379> lpush num 1 3
(integer) 4
127.0.0.1:6379> linsert num BEFORE 1 4 ##将4插入左边第一个1的前面
(integer) 5   ##插入后,一共有5个元素
127.0.0.1:6379> lrange num 0 -1
1) "3"
2) "4"
3) "1"
4) "2"
5) "1"
127.0.0.1:6379> rpoplpush num num1 ##转移一个元素
"1"
127.0.0.1:6379> lrange num1 0 -1
1) "1"
127.0.0.1:6379> rpoplpush num num1
"2"
127.0.0.1:6379> lrange num1 0 -1
1) "2"
2) "1"
127.0.0.1:6379> lrange num 0 -1 ##num中转移走了2个元素
1) "3"
2) "4"
3) "1"
127.0.0.1:6379> lpushx num 5 ##键名num存在,push成功
(integer) 4
127.0.0.1:6379> lrange num2 0 -1
(empty list or set)
127.0.0.1:6379> lpushx num2 1 ##键名num2不存在,push失败
(integer) 0
127.0.0.1:6379> lrange num2 0 -1
(empty list or set)

用途

  1. 列表页

set

redis的set使用值为空的散列表(hash table)实现。

SADD key member [member ...] 加入set中不存在的元素;返回成功加入的值的个数

SREM key member [member ... ] 删除set中存在的元素;返回成功删除的个数

SPOP key 随机选取一个元素,弹出并返回。如果key不存在,返回nil。

SMEMBERS key 获取所有元素

SISMEMBER key member 判断元素是否在集合中,存在返回1;key或者member不存在,返回0。

SCARD key 获取元素个数

SDIFF key1 [key2 ... ] 集合求差集,key1中存在,key2中不存在的

SINTER key [key ... ] 集合求交集

SUNION key [key ... ] 集合求并集

SDIFFSTORE destination key1 [key2 ... ] 集合求差集,并存入destination中。

SINTERSTORE destination key [key ... ] 集合求交集,并存入destination中。

SUNIONSTORE destination key [key ... ] 集合求并集,并存入destination中。

SRANDMEMBER key [count] 随机选取count个元素,不带参数count时,选取一个。count=0,返回空列表;count > 0,选择min(count, scard)个数据,且不重复,最多返回所有元素; count < 0 选择|count|个元素,有可能重复。

SMOVE source destination member 原子性的将参数中的成员从source键移入到destination键所关联的Set中。因此在某一时刻,该成员或者出现在source中,或者出现在destination中。如果该成员在source中并不存在,该命令将不会再执行任何操作并返回0,否则,该成员将从source移入到destination。如果此时该成员已经在destination中存在,那么该命令仅是将该成员从source中移出。如果和Key关联的Value不是Set,将返回相关的错误信息。返回1表示正常移动,0表示source中并不包含参数成员。

127.0.0.1:6379> sadd set1 a b ##添加两个不存在的元素
(integer) 2
127.0.0.1:6379> sadd set1 a c ##添加成功一个元素c
(integer) 1
127.0.0.1:6379> smembers set1 ##获取所有元素
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> srem set1 d b ##删除成功一个元素
(integer) 1
127.0.0.1:6379> smembers set1
1) "c"
2) "a"
127.0.0.1:6379> sismember set1 a
(integer) 1
127.0.0.1:6379> sadd set1 b
(integer) 1
127.0.0.1:6379> sadd set2 a d e
(integer) 3
127.0.0.1:6379> sadd set3 c h j
(integer) 3
127.0.0.1:6379> sdiff set1 set2 set3 ##求差集,在set1中,同时不在set2,set3中的元素
1) "b"
127.0.0.1:6379> scard set1
(integer) 3
127.0.0.1:6379> sdiffstore set4 set1 set2 set3
(integer) 1
127.0.0.1:6379> smembers set4
1) "b"
127.0.0.1:6379> srandmember set1 0
(empty list or set)
127.0.0.1:6379> srandmember set1 1
1) "c"
127.0.0.1:6379> srandmember set1 2
1) "a"
2) "b"
127.0.0.1:6379> srandmember set1 5 ##返回min(5, 3)个元素,且不重复
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> srandmember set1 -5 ## 返回5个元素,可能重复
1) "a"
2) "b"
3) "c"
4) "c"
5) "c"
127.0.0.1:6379> spop set1
"c"
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "d"
2) "a"
3) "e"
127.0.0.1:6379> smove set2 set1 c ##source中不含移动的元素,不操作
(integer) 0
127.0.0.1:6379> smove set2 set1 e ##移动一个元素到另一个集合
(integer) 1
127.0.0.1:6379> smembers set2
1) "d"
2) "a"
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
3) "e"

用途

  1. 唯一性数据集合,如某用户访问了哪些店铺等。
  2. 集合相关场景。每个店铺的访问用户是一个set,查找同时访问多个店铺的用户群,查找访问一类店铺的用户群等。

sorted set

有序集合为每一个元素关联一个分数,并按照分数进行排序。 虽然集合中的每个元素都是不相同的,但是它们的分数却可以相同。

ZADD key score member [score member ... ] 添加新元素,如果元素已经存在,则更新分数。score支持整型和双精度浮点型。返回新添加的元素的个数(更新分数的不算)。inf和-inf分别表示正无穷和负无穷。

ZINCRBY key increment member 增加一个元素的分数,increment可以是负数。

ZSCORE key member 查询元素的分数

ZCARD key 获取集合中元素的个数

ZCOUNT key min max 指定分数范围内元素的个数,支持开闭区间。

ZRANGE key start end [WITHSCORES] 按照分数从小到大排序,获取排名在某个范围的元素列表,分数可选。闭区间,end可为负数,与lrange参数要求一致。

ZREVRANGE key start end [WITHSCORES] 按照分数从大到小排序。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count ] 按分数从小到大顺序,返回分数在闭区间[min,max]的元素。可以指定开区间,在min前面加上"(",则表示(min, max]。支持inf和-inf。 offset和count指,在获得的元素列表的基础上,向后偏移offset个元素,并且只获取前count个元素。

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count ] 按分数从大到小顺序,返回分数在闭区间[min,max]的元素。注意max和min的参数位置。

ZREM key member [member ... ] 删除一个或者多个元素

ZREMRANGEBYRANK key start end 按照范围排名删除元素,闭区间。索引从0开始。

ZREMRANGEBYSCORE key min max 按照分数排名,删除分数在[min,max]的元素,支持开区间。

ZRANK key member 按分数从小到大排序,获取元素member的排名,分数最小的排名是0

ZREVRANK key member 按分数从大到小排序,获取元素member的排名,分数最大的排名是0

ZINTERSTORE destination numkeys key [key ... ] [WEIGHTS weight [weight ... ]] [AGGREGATE SUM|MIN|MAX] 计算numkeys个有序集合的交集,存储在有序集合destination里面,返回destination的元素个数。

WEIGHTS参数设置每个集合的权重,每个集合在参与计算时,元素的分数会被乘上该集合的权重。

AGGREGATE表示destination中元素分数的计算方式:

AGGREGATE为SUM(默认值)时,则destination中元素的分数,是每个参与计算的集合中该元素分数的和。

AGGREGATE为MAX时,则destination中元素的分数,是每个参与计算的集合中该元素分数的最大值。

AGGREGATE为MIN时,则destination中元素的分数,是每个参与计算的集合中该元素分数的最小值。

ZUNIONSTORE destination numkeys key [key ... ] [WEIGHTS weight [weight ... ]] [AGGREGATE SUM|MIN|MAX] 与上面类似。

127.0.0.1:6379> zadd zset1 10 sh 40 bj ##添加2个元素
(integer) 2
127.0.0.1:6379> zadd zset1 20 sh 50 hz 80 cd ##更新1个,添加2个
(integer) 2
127.0.0.1:6379> zscore zset1 sh ##获取sh的分数,已更新为20
"20"
127.0.0.1:6379> zrange zset1 1 -1 ##从第二个元素开始的所有元素
1) "bj"
2) "hz"
3) "cd"
127.0.0.1:6379> zrange zset1 0 -1 withscores ##获取全部元素
1) "sh"
2) "20"
3) "bj"
4) "40"
5) "hz"
6) "50"
7) "cd"
8) "80"
127.0.0.1:6379> zadd zset1 inf zy ##添加正无穷
(integer) 1
127.0.0.1:6379> zrangebyscore zset1 (50 inf withscores ## 分数大于50的元素
1) "cd"
2) "80"
3) "zy"
4) "inf"
127.0.0.1:6379> zrangebyscore zset1 50 inf withscores limit 1 2
## 分数大于等于50的元素,从第二个开始,取2个
1) "cd"
2) "80"
3) "zy"
4) "inf"
127.0.0.1:6379> zincrby zset1 5 hz ## 给元素hz加5分
"55"
127.0.0.1:6379> zrangebyscore zset1 (50 inf ## 添加成功
1) "hz"
2) "cd"
3) "zy"
127.0.0.1:6379> zrange zset1 0 -1 WITHSCORES ##查询所有元素
 1) "sh"
 2) "20"
 3) "bj"
 4) "40"
 5) "hz"
 6) "55"
 7) "cd"
 8) "80"
 9) "zy"
10) "inf"
127.0.0.1:6379> zcount zset1 0 inf ##获取元素个数
(integer) 5
127.0.0.1:6379> zcount zset1 (55 inf ##大于55元素个数
(integer) 2
127.0.0.1:6379> zrem zset1 zy ##删除zy
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 ## 剩下四个
1) "sh"
2) "bj"
3) "hz"
4) "cd"
127.0.0.1:6379> zremrangebyrank zset1 1 2 ## 按照排名,删除第2名到第3名
(integer) 2
127.0.0.1:6379> zrange zset1 0 -1 ## 只剩下2个
1) "sh"
2) "cd"
127.0.0.1:6379> zadd zs1 1 a 2 b
(integer) 2
127.0.0.1:6379> zadd zs2 10 a 20 b
(integer) 2
## zs1和zs2取交集,zs1的权重为1,zs2的权重为0.5,所以a的结果分数是1+10*0.5=6
127.0.0.1:6379> zinterstore zs3 2 zs1 zs2 WEIGHTS 1 0.5 AGGREGATE sum
(integer) 2
127.0.0.1:6379> zrange zs3 0 -1 withscores
1) "a"
2) "6"
3) "b"
4) "12"

用途

  • 排序的场景。如按照博客访问量排序文章列表。key是用户id,set中的数据是文章id,每个文章id关联一个score(访问量)。

与列表的比较

  • 都可以获取某一范围的元素
  • 列表类型通过链表实现,获取两端数据速度快,元素增多后,访问中间数据速度较慢。所以适合“新鲜事”和“日志”一类的场景。
  • 有序集合是通过散列表和跳跃表实现的,所以读取位于中间部分的数据的速度也很快。时间复杂度O(log(N))。
  • 列表不能简单的调整某个元素的位置,有序集合可以。(修改元素的分数)

更多关于redis基本类型和使用方法请点击下面的相关链接

(0)

相关推荐

  • Redis中散列类型的常用命令小结

    Redis散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,也就是说,散列类型不能嵌套其他的数据类型.一个散列类型键可以包含至多2^32-1个字段. 除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套.比如集合类型的每个元素只能是字符串,不能是一个集合或者散列表等. 散列类型适合存储对象:使用对象类别和ID构成建名,使用字段表示对象的属性,而字段值存储属性值.例

  • Redis 数据类型的详解

    Redis 数据类型的详解 概要: Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个键最大

  • Redis02 使用Redis数据库(String类型)全面解析

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为String 的记录. 在客户端输入命令: C:\software\redis\64bit>redis-cli.exe -h 127.0.0.1 -p 6379 redis 127.0.0.1:6379> set foo test OK redis 127.0.0.1:6379> get fo

  • redis列表类型_动力节点Java学院整理

    据说60%的人使用redis看重的是redis中的list类型,那这个list有什么用呢???不用我说大家都明白,做队列使用呗,为什么用它呢,很简单呗,因为有了它我就不需要专门的MQ产品啦,比如说RabbitMQ,ActiveMQ等等...对吧. 一.实战 先我们还是看一下List列表给我们提供的方法. 这些方法还是稀里糊涂的有一些的,没关系,做队列使用的话,常用的也就四个:LPOP,LPUSH,RPOP,RPUSH,从这四个单词上面,你应该就明白这有点像数据结构中的"双端队列",对吧

  • Redis有序集合类型的操作_动力节点Java学院整理

    今天我们说一下Redis中最后一个数据类型 "有序集合类型",回首之前学过的几个数据结构,不知道你会不会由衷感叹,开源的世界真好,写这些代码的好心人真的要一生平安哈,不管我们想没想的到的东西,在这个世界上都已经存在着,曾几何时,我们想把所有数据按照数据结构模式组成后灌输到内存中,然而为了达到内存共享的方式,不得不将这块内存单独部署,同时还要考虑怎么序列化,何时序列互的问题,烦心事太多太多...后来才知道有redis这么个玩意,能把高级的,低级的数据结构单独包装到一个共享内存中(Redi

  • redis数据类型_动力节点Java学院整理

    Redis支持5种数据类型,它们描述如下: Strings - 字符串 Redis的字符串是字节序列.在Redis中字符串是二进制安全的,这意味着他们有一个已知的长度,是没有任何特殊字符终止决定的,所以可以存储任何东西,最大长度可达512兆. 例子 redis 127.0.0.1:6379> SET name "yiibai" OK redis 127.0.0.1:6379> GET name "yiibai" 在上面的例子使用Redis命令set和ge

  • redis哈希类型_动力节点Java学院整理

    redis中的hash也是我们使用中的高频数据结构,它的构造基本上和编程语言中的HashTable,Dictionary大同小异,如果大家往后有什么逻辑需要用Dictionary存放的话,可以根据场景优先考虑下redis哦. 一:常用方法 只要是一个数据结构,最基础的永远是CURD,redis中的insert和update,永远只需要set来替代,比如下面的Hset,如下图: 就好像Java中的类和方法,知道传递一些啥参数就OK了,就比如要说的HSet,它的格式如下: 接下来我在CentOS里面

  • Redis集合类型的常用命令小结

    集合类型介绍 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算.交集运算.并集运算. 首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同. ①集合类型和列表类型还是都能存储2^32-1个字符串 ②集合类型是无序的,列表类型是有序的 ③集合类型是唯一的,列表类型的值是不唯一的 下面我们一起来看一下语法. 1.增加删除元素命令 sadd key member [membe

  • Redis中五种数据类型简单操作

    Redis中五种数据类型简单操作 提出问题 Redis五种数据类型的简单增删改查命令??? 解决问题 假设你已经安装Redis服务器: 假设你已经打开Redis cli命令行工具: 假设你对Redis有所了解: Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_key的值 127.0.0.1:6379> get ay_key "ay"

  • Redis的5种数据类型与常用命令讲解

    1.redis的5种数据类型: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) hash hash散列值(hash的key必须是唯一的) sort set 有序集合 2.string类型的常用命令: 自加:incr 自减:decr 加: incrby 减: decrby 3.list类型支持的常用命令: lpush:从左边推入 lpop:从右边弹出 rpush:从右变推入 rpop:从右边弹出

  • Redis中3种特殊的数据类型(BitMap、Geo和HyperLogLog)

    前言 Reids 在 Web 应用的开发中使用非常广泛,几乎所有的后端技术都会有涉及到 Redis 的使用.Redis 种除了常见的字符串 String.字典 Hash.列表 List.集合 Set.有序集合 SortedSet 等等之外,还有一些不常用的数据类型,这里着重介绍三个.下面话不多说了,来一起看看详细的介绍吧. BitMap BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现.Redis 从

  • Redis字符串类型的常用命令小结

    Redis字符串类型 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号也可以替换成其他支持glob风格通配符格式,具体规则如下: ?:匹配一个字符 *:匹配任意个(包括0个)字符 []:匹配括号间多大任一个字符,可

  • Jedis对redis的五大类型操作代码详解

    本篇主要阐述Jedis对redis的五大类型的操作:字符串.列表.散列.集合.有序集合. JedisUtil 这里的测试用例采用junit4进行运行,准备代码如下: private static final String ipAddr = "10.10.195.112"; private static final int port = 6379; private static Jedis jedis= null; @BeforeClass public static void init

  • redis字符串类型_动力节点Java学院整理

    我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直接塞给char[]数组的. 如果你真的这么想的话,会有几个问题就要过来砍你了,先我们来找一个redis手册,http://doc.redisfans.com/ 第一:如果你每次都执行Append函数,那是不是redis的char[]每次都需要再次扩容,这样是不是每次都是耗时操作呢? 第二:如果你每次执行String中的StrLen,那redis底层

  • redis集合类型_动力节点Java学院整理

    我们来看看Redis五大类型中的第四大类型:"集合类型",集合类型还是蛮有意思的,先看redis手册,如下: 上面就是redis中的set类型使用到的所有方法,还是老话,常用的方法也就那么四个(CURD)... 一: 常用方法 1. SAdd 这个方法毫无疑问,就是向集合里面添加数据,比如下面这样,我往fruits集合里面添加喜爱的水果. 127.0.0.1:6379> sadd fruits apple (integer) 1 127.0.0.1:6379> sadd f

  • Redis安装及基本数据类型

    本文讲述了Redis安装及基本数据类型,小编觉得挺不错的,感兴趣的小伙伴们可以参考一下,具体如下 安装1.阿里云CentOS 1.进入到centos系统,输入wget ,下载好目前最新版的Redis,下载过程如下图. 2.对刚才的下载文件解压,进入到解压后的目录下. 3.输入make,进行编译. 4.进入src目录中,将其中的redis-server,redis-benchmark,redis-cli复制到自己新建的一个目录中. 5.设置环境变量. 复制代码 代码如下: vi /etc/prof

  • Redis列表类型的常用命令小结

    列表类型介绍 列表类型也是一个我们很长要用到的一个类型.比如我们发博客,要用到博客列表.如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键,处于性能方面的考虑,在生产环境是不推荐使用的. 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加.删除.获取元素,或者某个片段.在redis中,实际上是使用双向链表的方式实现的,所以在列表两端添加删除元素的时间复杂度是O(1),获取的元素越接近两端,速度越快.但是通过索引访问元素

  • Redis有序集合类型的常用命令小结

    一.有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已.Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作.集合的元素依然是不能够相同的,但是分数可以相同. 下面列举有序集合和类型和列表类型的相似处: ①两者都是有序的(废话!) ②两者都可以获得某一范围的元素 下面列举区别: ①列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢:有序集合

随机推荐