进过一段时间的磨练与实践,今天闲暇之余写下自己这么长时间使用redis的一点心得,才疏学浅,还请多多指教互相学习

1.1:redis的基本数据结构一(string)

总所周知Redis所有的数据结构都以唯一的key字符串作为名称,然后通过这个唯一key值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value结构不样。

string就是其中之一,同时也是redis最简单的数据结构,它的内部表示就是一个字符数组。需要注意的是字符串最大长度为 512MB

以下是redis操作string常用的命令

//写入
set <key> <value>
//读取
get <key>
//检查
exists <key>
//删除
del <key>
//批量读取
mget <key> [key...]
//批量写入
mget <key> <value> [key value...]
//设置key过期时间
expire <key> <int>            #int秒后过期
//写入一个会过期的数据
setex <key> <int> <value>     #int秒后过期,等价 set+expire
//查询并写入
setnx <key> <value>           #如果<key>不存在就执行 set 创建
                              #注该操作不会修改已存在的数据
//自增
incr <key>                    #注key对应的value须是integer类型才会自增,且不能不能超过longint的最大值
//加减数据
incrby <key> <int>             #注key对应的value须是integer类型才会加减                                                                                

1.2:redis的基本数据结构二(list)

Redis的list相当于Java语言里面的 LinkedList,注意它是链表而不是数组。以下是redis操作list常用的命令
//写入
rpush <key> <value...>
//获取list长度
llen <key>
//左读取
lpop <key>                     #先进先出
//右读取
rpop <key>                     #先进后出
//读取指定下标数据
lindex <key> <index>           #相当于get(int index)方法,性能随着index的增大而边差
//截取
ltrim <key> <start_index> <end_index>
//获取自定范围数据
lrange <key> <start_index> <end_index>

1.3:redis的基本数据结构三(hash)

redis的hash相当于java中的HashMap,是无序字典,不同的是reids的字典的值只能是字符串,另外他们rehash的方式不一样

HashMap是一次性rehash全部,redis采用了渐进式rehash策略

以下是redis操作hash常用的命令

//写入
hset <key> <<key> <value>> #命令行的字符串如果含空格,要用引号括起来
//读取所有
hgetall <key>
//获取hash长度
hlen <key>
//获取value
hget <key> <key>
//加减
huncrby <key> <key> <int>

1.4:redis的基本数据结构四(set)

redis的set相当于java中的HashSet,内部的键值对是无序、唯一的

以下是redis操作set常用命令

//写入
sadd <key> <value>...     
//读取全部
smembers <key>
//查询value是否存在
smembers <key> <value>
//获取长度
scard <key>
//读取一个
spop <key>

1.5:redis的基本数据结构五(zset)

zset是redis提供最有特色的数据结构,它类似于java的SortedSet和HashMap的结合体,保证了内部value的唯一性,且给每个value赋予了一个score代表了value的权重

以下是redis操作zset的常用命令

//写入
zadd <key> <score> <value>
//按score排序列出
zrange <key> 0 -1
//按score倒序列出
zrevrange <key> 0 -1
//长度
zcard <key>
//指定value的score
zscore <key> <value> <score>
//查询value排名
zrank <key> <value>
//跟据score区间遍历
zrangebyscore <key> <min_score> <max_score>
//根据score区间遍历并返回score
zrangebyscore <key> <min_score> <max_score> withsocres  #inf代表无穷大
//删除value
zrem <key> <value>