Go 18.0 专业五


终篇:讲课用这个就行

<p>&lt;font color='red'&gt;redis.NewClient() &lt;/font&gt; 和&lt;font color='red'&gt; redis.Dial() &lt;/font&gt; 都是使用Go语言操作Redis的方法。但是它们有很大的区别。</p> <p>redis.NewClient()是github.com/go-redis/redis包中提供的一个快捷方法,用于创建一个新的Redis客户端对象。这个方法接收一个RedisOptions结构体变量,用于指定Redis服务器的选项(例如:地址、认证等)。这个方法在内部使用Dial()函数,在底层建立对Redis服务器的网络连接,管理连接池,控制重试和超时等。</p> <p>而redis.Dial()是github.com/gomodule/redigo/redis包中提供的一个函数,这个函数用于建立Redis服务器的网络连接。这个方法接收Redis服务器的网络地址和DialOption选项(例如:密码、超时、read_only标志等)。该函数返回一个redis.Conn类型的对象,您可以使用该对象执行Redis命令,并在命令完成后调用Close()方法关闭连接。</p> <p>总之,redis.NewClient()是一个高级客户端,提供了更为便利的方法来连接和管理Redis服务器。而redis.Dial()是一个底层函数,您需要手动管理连接并执行Redis命令。</p> <hr /> <p>当使用Go语言操作Redis时,您将会用到下列五种数据类型:</p> <p>1、String类型:String是最基本的数据类型,常被用于缓存短暂生存时间的数据,如Session Token等。使用Go语言,您通过redis.Client对象的Set()和Get()方法来设置和获取String数据。下面是一个示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.Set(&amp;quot;key&amp;quot;, &amp;quot;value&amp;quot;, 0).Err() if err != nil { panic(err) } val, err := client.Get(&amp;quot;key&amp;quot;).Result() if err != nil { panic(err) } fmt.Println(&amp;quot;key&amp;quot;, val) } </code></pre> <p>2、List类型:List可让您在列表的两端插入和删除其元素,类似于双向队列的数据结构。使用Go语言,您可以通过redis.Client对象的LPush()和RPop()等方法来操作List数据类型。下面是一个示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.LPush(&amp;quot;list&amp;quot;, &amp;quot;item1&amp;quot;, &amp;quot;item2&amp;quot;, &amp;quot;item3&amp;quot;).Err() if err != nil { panic(err) } val, err := client.RPop(&amp;quot;list&amp;quot;).Result() if err != nil { panic(err) } fmt.Println(&amp;quot;list&amp;quot;, val) } </code></pre> <p>3、Set类型:Set是无序的元素集合,意味着您不能保证一个Set的元素以特定的顺序存储,并且每个元素在集合中只出现一次。使用Go语言,您可以通过redis.Client对象的SAdd()和SMembers()等方法来操作Set数据类型。下面是一个示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.SAdd(&amp;quot;set&amp;quot;, &amp;quot;item1&amp;quot;, &amp;quot;item2&amp;quot;, &amp;quot;item3&amp;quot;).Err() if err != nil { panic(err) } val, err := client.SMembers(&amp;quot;set&amp;quot;).Result() if err != nil { panic(err) } fmt.Println(&amp;quot;set&amp;quot;, val) } </code></pre> <p>4、Hash类型:Hash是一个键值对集合,常被用于保存用户信息、评论和其他数据。使用Go语言,您可以通过redis.Client对象的HSet()和HGetAll()等方法来操作Hash数据类型。下面是一个示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.HSet(&amp;quot;hash&amp;quot;, &amp;quot;field1&amp;quot;, &amp;quot;value1&amp;quot;).Err() if err != nil { panic(err) } val, err := client.HGetAll(&amp;quot;hash&amp;quot;).Result() if err != nil { panic(err) } fmt.Println(&amp;quot;hash&amp;quot;, val) } </code></pre> <p>hash 批量 set 示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.HMSet(&amp;quot;myhash&amp;quot;, map[string]interface{}{ &amp;quot;field1&amp;quot;: &amp;quot;value1&amp;quot;, &amp;quot;field2&amp;quot;: &amp;quot;value2&amp;quot;, &amp;quot;field3&amp;quot;: &amp;quot;value3&amp;quot;, }).Err() if err != nil { panic(err) } fmt.Println(&amp;quot;Values set successfully&amp;quot;) } </code></pre> <p>5、ZSet类型:ZSet是有序的元素集合,每个元素都有与之关联的分数,您可以通过分数来按照升序或降序排列集合中的元素,类似于索引。使用Go语言,您可以通过redis.Client对象的ZAdd()和ZRange()等方法来操作ZSet数据类型。下面是一个示例:</p> <pre><code class="language-go">package main import ( &amp;quot;fmt&amp;quot; &amp;quot;github.com/go-redis/redis&amp;quot; ) func main() { client := redis.NewClient(&amp;amp;redis.Options{ Addr: &amp;quot;localhost:6379&amp;quot;, Password: &amp;quot;&amp;quot;, DB: 0, }) err := client.ZAdd(&amp;quot;zset&amp;quot;, &amp;amp;redis.Z{Score: 1, Member: &amp;quot;one&amp;quot;}, &amp;amp;redis.Z{Score: 2, Member: &amp;quot;two&amp;quot;}).Err() if err != nil { panic(err) } val, err := client.ZRangeWithScores(&amp;quot;zset&amp;quot;, 0, - </code></pre>

页面列表

ITEM_HTML