进过一段时间的磨练与实践,今天闲暇之余写下自己这么长时间使用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)
//写入 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>